Android - 在 onClick 动作期间隐藏按钮
Android - Hide button during an onClick action
我需要像这样在 onClick 操作期间隐藏按钮:
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;
}
}
当然,因为您在同一个线程中执行所有操作,您可能会注意到可见性变化,试试这个:
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;
}
}
我需要像这样在 onClick 操作期间隐藏按钮:
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;
}
}
当然,因为您在同一个线程中执行所有操作,您可能会注意到可见性变化,试试这个:
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;
}
}