我正在写一台录音机,它有启动和停止录音的按钮。最初,记录没有发生,所以记录按钮应该可用,而停止按钮应该被禁用,因为没有什么可以停止。
如何/在何处实施此目的?
另外一个问题是我的按钮是ImageButton-s,所以我可能需要一个资产来表示禁用状态。不幸的是,我发现没有任何方法可以在选择器中定义禁用状态?
答案 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主体内部单击时发生的情况。
希望它有所帮助。