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

How to make button initially disabled or pressed in Android?

我正在写一个录音机,它有开始和停止录音的按钮。最初,没有进行录制,因此录制按钮应该可用,而停止按钮应该禁用,因为没有什么可以停止的。

How/where要执行这个吗?

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

您可以使用

button.setEnabled(true) 使按钮可供按下。

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

你可以这样应用

最初,在创建方法中你可以这样做:-

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);
    }

没有任何示例代码,我无法提供任何特定于您的项目的示例。但是,在您的布局文件中为“停止图像”按钮设置 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 属性 设置为此可绘制对象,例如

android:drawable="@drawable/stop_state"

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

我有过类似的场景,我用一个按钮来处理播放和暂停,场景是相同的,据我了解,您需要处理开始和停止以进行录制。这是我的方法:

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

        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 主体中单击时发生的情况。

希望对您有所帮助。