如何在Android中最初禁用或按下按钮?

时间:2017-01-19 16:27:47

标签: android initialization android-imagebutton android-selector

我正在写一台录音机,它有启动和停止录音的按钮。最初,记录没有发生,所以记录按钮应该可用,而停止按钮应该被禁用,因为没有什么可以停止。

如何/在何处实施此目的?

另外一个问题是我的按钮是ImageButton-s,所以我可能需要一个资产来表示禁用状态。不幸的是,我发现没有任何方法可以在选择器中定义禁用状态?

3 个答案:

答案 0 :(得分:2)

没有任何示例代码,我无法提供任何特定于您的项目的示例。但是,在布局文件中为“停止图像”按钮设置android:enabled="false"会使布局膨胀,默认情况下禁用“停止图像”按钮。

至于代表禁用状态,您可以使用drawable selectors。因此,我们假设您在res/drawable/stop_state.xml处有一个文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false"  android:drawable="@drawable/stop_disabled" />
    <item android:drawable="@drawable/stop_enabled" />
</selector>

在包含ImageButton的布局中,您可以将android:drawable属性设置为此drawable,例如

android:drawable="@drawable/stop_state"

同样,为记录按钮创建一个可绘制的选择器,并根据您的应用当前是否正在录制,使用.setEnabled(boolean)管理活动中的已启用状态。

答案 1 :(得分:1)

您可以使用

button.setEnabled(true)可以按下按钮。

您可以使用button.setEnabled(false)按钮无法按下。

您可以像这样申请

在内部,在on create方法中,您可以这样做: -

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_in_app_billing);

        startButton = (Button)findViewById(R.id.buyButton);
        stopButton = (Button)findViewById(R.id.clickButton);
        stopButton.setEnabled(false);
    }

然后按下按钮方法

public void buttonClicked (View view)
    {
        stopButton.setEnabled(false);
        startButton.setEnabled(true);
    }

答案 2 :(得分:1)

我有一个类似的场景,我用一个按钮来处理播放和暂停,场景是相同的,据我所知,你需要处理开始和停止录制。这是我的方法:

我保留了一个布尔值来保持按钮的状态,然后在按钮的点击监听器内,我做了相应的更改。方法如下:

        private boolean isTurnedOn = false;
        playButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view)
        {


            if(!isTurnedOn)
            {
                //playButton.setBackground(ContextCompat.getDrawable(getApplicationContext(), R.drawable.pause));
                //isTurnedOn = true;
                //mPlayer.start();
                //mPlayer.seekTo(length);


            }
            else
            {
                //playButton.setBackground(ContextCompat.getDrawable(getApplicationContext(), R.drawable.play2));
                //isTurnedOn = false;
                //mPlayer.pause();
                //length = mPlayer.getCurrentPosition();
            }

        }
    });

正如您所看到的,您可以处理这两个要求,包括设置按钮的图像以及if else主体内部单击时发生的情况。

希望它有所帮助。