单击时禁用按钮

时间:2012-03-23 12:00:11

标签: android android-widget

我是编程世界的新手,我的知识有限。如果我有任何错误,请原谅。 我的问题是。

我正在创建一个包含START&停止按钮。当用户点击START按钮时,必须启动服务;停止服务必须停止。

现在我想在我点击开始按钮(点击开始按钮时服务开始)时禁用我的START按钮,当点击STOP按钮时我想看到START按钮是正常的可点击按钮。

我通过创建按钮对象使用了.setEnabled(false)。 我需要帮助......提前致谢

11 个答案:

答案 0 :(得分:11)

int count = 0;

if (count == 0) {
    stop.setEnabled(false);
    PlayButton.setEnabled(true);
}

@Override
public void onClick(View v) {
    switch(v.getId()) {
        case R.id.play:
            count++;
            play.setEnabled(false);
            Toast.makeText(this, "Button Disabled", Toast.LENGTH_LONG).show();
            Stopbutton.setEnabled(true);
            break;

        case R.id.stop:
            Toast.makeText(this, "Button Disabled", Toast.LENGTH_LONG).show();
            count--;    
            PlayButton.setEnabled(true);
            stop.setEnabled(false);
            break;        
    }
}

&安培;检查此链接 How to disable an Android button?

答案 1 :(得分:8)

您也可以尝试: -

按钮启用 -

button.setClickable(true); 

按钮禁用 -

button.setClickable(false);

答案 2 :(得分:2)

在onclick的主体中

单击时禁用button1

public void onClick(View v) {
  if(v.getId() == R.id.button1)
   {
       Button btn = (Button)findViewById(R.id.buton1);
       btn.setEnabled(false);

   }

}

答案 3 :(得分:1)

试试这个:

MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.view.View;

public class MainActivity extends Activity {

private Button start, stop;

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    start = (Button)findViewById(R.id.start);
    stop = (Button)findViewById(R.id.stop);

    start.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            start.setVisibility(View.GONE);
            /* do something else */
        }
    });

    stop.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            start.setVisibility(View.VISIBLE);
            /* do something else */
        }
    });
}

}

您的布局main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/start"
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="Start"
android:visibility="visible"
/>
<Button
android:id="@+id/stop"
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="Stop"
android:visibility="visible"
/>

答案 4 :(得分:1)

如果您想在按钮cleck之后使按钮不可见,则首先禁用它,因为vipin说并添加此.setVisibility(View.INVISIBLE);这将在按钮单击后隐藏按钮,当您想再次使其可见时使用此{ {1}}

注意:如果您希望按钮不可见而不希望它消耗它所需的布局空间,那么您可以使用.setVisibility(View.VISIBLE);代替View.GONE

我希望我很清楚。

答案 5 :(得分:1)

如果你想从另一个类中禁用它,你可以使用它,

Button btn = ((MainActivity)context).findViewById(R.id.myButton);
btn.setEnabled(false);    //or (true) to enable it

您还必须声明&#39; context&#39;在你班级的开头

public class MyClass extends AppCompatActivity {    
    Context context;

当我需要执行操作并且不希望用户继续点击按钮时,我通常在我的onPreExecute和onPostExecute中使用它。

@Override
protected void onPreExecute() {
    //some actions to be performed or set before executing task 
    Button btn = ((MainActivity)context).findViewById(R.id.myButton);
    btn.setEnabled(false);
}

@Override
protected void onPostExecute() {
    //some actions to be performed or set after executing task 
    Button btn = ((MainActivity)context).findViewById(R.id.myButton);
    btn.setEnabled(true);
}

答案 6 :(得分:1)

使用Kotlin,您可以禁用点击按钮,

myButton.setOnClickListener {
    it.isClickable = false     // to disable clicking on button
    it.isEnabled = false       // to disable button
}

请不要忘记这里的视图是it

答案 7 :(得分:0)

您可以致电button.setOnClickListener(null);取消活动列表。此外,您可以更改背景drawable以使其具有禁用效果。

PS:只有在没有其他工作时才尝试使用此解决方案。

答案 8 :(得分:0)

更优选的解决方案是,

onclick(){
  btn.setEnabled(false);
  btn.setClickable(false);
  //yourwork
  myWork();
}

myWork(){
 //your tasks.
 btn.setEnabled(true);
 btn.setClickable(true);
}

答案 9 :(得分:0)

初始化onClickListener为button.inside第一个按钮只需将setEnable()设置为false ..并从第二个按钮单击监听器将setEnable设置为true

享受

答案 10 :(得分:-1)

myButton.setEnabled(false);

Timer buttonTimer = new Timer();
buttonTimer.schedule(new TimerTask() {

    @Override
    public void run() {
        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                myButton.setEnabled(true);
            }
        });
    }
}, 5000);

试试这个,完美的工作