好的,我有两个按钮。第一个是“加载文本”,第二个是“说出来”。
现在,我不希望Speak按钮在没有加载文本时处于活动状态。
我已设法通过“加载文本”按钮的onClickListener方法将值设置到EditText中。在我调用的相同方法中,
btnSpeak.setEnabled(true);
我已将此初始化为
btnSpeak = (Button) findViewById(R.id.button1);
整个编码是,
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = tts.setLanguage(Locale.US);
if (result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "This Language is not supported");
} else {
btnSpeak.setEnabled(true);
//for checking
if(btnSpeak.isEnabled())
{
Toast.makeText(SimpleAndroidOCRActivity.this, "Button should work!", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(SimpleAndroidOCRActivity.this, "Button should not work!", Toast.LENGTH_SHORT).show();
}
}
} else {
Log.e("TTS", "Initilization Failed!");
}
}
这是检查状态并将语言分配给TTS以供进一步使用。我得到祝酒“按钮应该工作”,但它没有启用。为什么会这样?有什么作用?
我在.xml文件中,
<Button
android:id="@+id/button1"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_width="200dp"
android:enabled="false"
android:text="@string/tts_text" />
我应该在这里启用它,然后在运行时禁用和启用吗?
答案 0 :(得分:13)
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = tts.setLanguage(Locale.US);
if (result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "This Language is not supported");
} else {
btnSpeak.setEnabled(true);
//for checking
if(btnSpeak.isEnabled())
{
btnSpeak.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
YourVoicemethod();
Toast.makeText(SimpleAndroidOCRActivity.this, "Button should work!", Toast.LENGTH_SHORT).show();
}
});
}
else
{
Toast.makeText(SimpleAndroidOCRActivity.this, "Button should not work!", Toast.LENGTH_SHORT).show();
}
}
} else {
Log.e("TTS", "Initilization Failed!");
}
}
答案 1 :(得分:8)
您必须使用setClickable
btnSpeak.setClickable(true);
btnSpeak.setEnabled(true);
另外,使用isEnabled()
检查状态
//for checking
if(btnSpeak.isEnabled())
{
Toast.makeText(SimpleAndroidOCRActivity.this, "Button should work!", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(SimpleAndroidOCRActivity.this, "Button should not work!", Toast.LENGTH_SHORT).show();
}
答案 2 :(得分:5)
检查按钮是否按下并编写代码。
示例代码。
if(button2.isPressed()){
button2.setEnabled(false);
button1.setEnabled(true);
}
else if(button1.isPressed()){
button1.setEnabled(false);
button2.setEnabled(true);
}
我希望这会对你有所帮助。
答案 3 :(得分:3)
可能为时已晚,您已找到解决方案,但您可以使用invalidate强制按钮根据其新状态重绘自身:
{{1}}
答案 4 :(得分:1)
您可以通过禁用和启用按钮的可见性来实现
这是一个例子
View button = findViewById(R.id.buttonid);
button.setVisibility(View.GONE);
答案 5 :(得分:0)
为两个按钮使用一个监听器
button1.setOnClickListener(listener);
button2.setOnClickListener(listener);
listener = new OnClickListener({
@Override
public void onClick(View v) {
switch(button_id){
case id1:
button2.setEnabled(false);
button1.setEnabled(true);
break;
case id2:
button1.setEnabled(false);
button2.setEnabled(true);
break;
}
}
});