Android-在onClick操作期间隐藏按钮
我需要在onClick操作期间隐藏一个按钮,如下所示:Android-在onClick操作期间隐藏按钮,android,android-layout,onclick,visibility,Android,Android Layout,Onclick,Visibility,我需要在onClick操作期间隐藏一个按钮,如下所示: public void onClick(View view) { switch (view.getId()){ case R.id.button1: Button button2 = (Button) findViewById(R.id.button2); button2.setVisibility(View.GONE); //Som
public void onClick(View view) {
switch (view.getId()){
case R.id.button1:
Button button2 = (Button) findViewById(R.id.button2);
button2.setVisibility(View.GONE);
//Some methods
//...
button2.setVisibility(View.VISIBLE);
break;
}
但是可见性仅在onClick之后发生变化,在onClick期间如何隐藏按钮
谢谢您可以尝试以下方法:
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(v.getId()){
case R.id.button1: {
if(event.getAction() == MotionEvent.ACTION_DOWN){
Button button2 = (Button) findViewById(R.id.button2);
button2.setVisibility(View.GONE);
return true;
} else if(event.getAction() == MotionEvent.ACTION_UP) {
// some methods
Button button2 = (Button) findViewById(R.id.button2);
button2.setVisibility(View.VISIBLE);
return true;
}
return false;
}
}
您可以尝试以下方法:
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(v.getId()){
case R.id.button1: {
if(event.getAction() == MotionEvent.ACTION_DOWN){
Button button2 = (Button) findViewById(R.id.button2);
button2.setVisibility(View.GONE);
return true;
} else if(event.getAction() == MotionEvent.ACTION_UP) {
// some methods
Button button2 = (Button) findViewById(R.id.button2);
button2.setVisibility(View.VISIBLE);
return true;
}
return false;
}
}
当然,由于您在同一线程中执行所有操作,您可能会注意到可见性的变化,请尝试以下操作:
public void onClick(View view) {
switch (view.getId()){
case R.id.button1:
final button2 = (Button) findViewById(R.id.button2);
button2.setVisibility(View.GONE);
setVisibility(GONE);
new Thread(new Runnable() {
@Override
public void run() {
//your work
runOnUiThread(new Runnable() { //resetting the visibility of the button
@Override
public void run() {
//manipulating UI components from outside of the UI Thread require a call to runOnUiThread
button2.setVisibility(VISIBLE);
}
});
}
}).start();
break;
}
}
当然,由于您在同一线程中执行所有操作,您可能会注意到可见性的变化,请尝试以下操作:
public void onClick(View view) {
switch (view.getId()){
case R.id.button1:
final button2 = (Button) findViewById(R.id.button2);
button2.setVisibility(View.GONE);
setVisibility(GONE);
new Thread(new Runnable() {
@Override
public void run() {
//your work
runOnUiThread(new Runnable() { //resetting the visibility of the button
@Override
public void run() {
//manipulating UI components from outside of the UI Thread require a call to runOnUiThread
button2.setVisibility(VISIBLE);
}
});
}
}).start();
break;
}
}
如果您想在用户单击另一个视图时隐藏按钮/视图,则必须实现
onTouchListener
而不是onClickListener
我想在“某些方法”时隐藏按钮如果你想在用户点击另一个视图时隐藏一个按钮/视图,那么你必须实现onTouchListener
,而不是onClickListener
。我想在执行“某些方法”时隐藏按钮。这很有效!另一个问题,总共有3个线程,一个用于将可见性设置为GONE,另一个用于执行我的工作,最后一个用于再次设置可见性。可以在两个线程中执行相同的操作吗?实际上,只有两个线程,UI线程和第二个线程用于您的工作,runUnuithRead
不会创建新线程,而只是将其run
方法中的代码发布到UI线程中。从文档aboutrunOnUiThread
方法:在UI线程上运行指定的操作。如果当前线程是UI线程,则立即执行该操作。如果当前线程不是UI线程,则操作将被发布到UI线程的事件队列中。这很有效!另一个问题,总共有3个线程,一个用于将可见性设置为GONE,另一个用于执行我的工作,最后一个用于再次设置可见性。可以在两个线程中执行相同的操作吗?实际上,只有两个线程,UI线程和第二个线程用于您的工作,runUnuithRead
不会创建新线程,而只是将其run
方法中的代码发布到UI线程中。从文档aboutrunOnUiThread
方法:在UI线程上运行指定的操作。如果当前线程是UI线程,则立即执行该操作。如果当前线程不是UI线程,则将操作发布到UI线程的事件队列。