首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android:在运行时启用/禁用按钮?

Android:在运行时启用/禁用按钮?
EN

Stack Overflow用户
提问于 2013-04-23 19:55:18
回答 6查看 74K关注 0票数 8

好的,我有两个按钮。第一个是“加载文本”,第二个是“说出来”。

现在,我不想在没有加载文本的情况下激活“说”按钮。

我已经设法通过Load Text按钮的onClickListener方法将值设置到EditText中。在我调用的同一个方法中,

代码语言:javascript
复制
btnSpeak.setEnabled(true);

我已经将其初始化为,

代码语言:javascript
复制
btnSpeak = (Button) findViewById(R.id.button1);

整个编码过程是,

代码语言:javascript
复制
@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文件中有,

代码语言:javascript
复制
<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" />

我应该在这里启用它,然后在运行时禁用和启用它吗??

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-04-23 20:06:27

代码语言:javascript
复制
@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!");
    }

}
票数 13
EN

Stack Overflow用户

发布于 2013-04-23 19:59:36

您必须使用setClickable

代码语言:javascript
复制
btnSpeak.setClickable(true);
btnSpeak.setEnabled(true);

另外,使用isEnabled()检查状态

代码语言:javascript
复制
//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();
}
票数 8
EN

Stack Overflow用户

发布于 2013-04-23 20:07:29

检查您的按钮是否已按下,然后编写代码。

示例代码。

代码语言:javascript
复制
if(button2.isPressed()){
    button2.setEnabled(false);
    button1.setEnabled(true);
}
else if(button1.isPressed()){
    button1.setEnabled(false);
    button2.setEnabled(true);
}

我希望这能对你有所帮助。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16168716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档