android - setFocusable 按钮点击

标签 android android-edittext

我有一个小型计时器应用程序和名为 etHetMetS 的 EditText 小部件,它们允许输入并显示时间。单击开始按钮并启动计时器时,我通过执行以下操作来禁止交互:

btnS.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
    if (calculateMS() != 0) {
        OnTimerStartButtonClicked();
        initiateTimer();
        DisableEditTexts();
                    ...

方法:

public void DisableEditTexts() {
    etH.setFocusable(false);
    etM.setFocusable(false);
    etS.setFocusable(false);
}

通过按下重置按钮,我想通过调用执行相反操作(将 focusable 设置为 true)的方法重新启用交互:

btnR.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        OnTimerResetButtonClicked();
        clearValues();
        EnableEditTexts();
        ...

问题:编辑文本不会通过单击重置按钮变得可聚焦。我在最后一个方法中所做的就是

etH.setFocusable(true);
etM.setFocusable(true);
etS.setFocusable(true);

我做错了什么?

最佳答案

尝试调用 EditText#setFocusableInTouchMode()相反:

etH.setFocusableInTouchMode(true);
// etc.

当您调用 setFocusable(false) 时,会在后台为您调用 setFocusableInTouchMode(false)。但是,当您调用 setFocusable(true) 时,幕后不会发生任何其他事情,setFocusableInTouchMode() 将变为 false

当您调用 setFocusableInTouchMode(true) 时,会发生类似的事情,setFocusable(true) 会为您调用。和之前的setFocusableInTouchMode(false)一样,不调用setFocuable(false)

source code 处登顶看到这个怪癖。

关于android - setFocusable 按钮点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13071651/

相关文章:

Android:插入新的原始联系人

java - 为android做一个基本的定时器?

android - EditText 导致 Activity 泄漏。目前的 stackoverflow 答案没有帮助

java - EditText 在其他方法上变为 null

java - 选择一个联系人并将其填写到EditText中

java - TextWatcher 在 EditText 中输入返回键时运行多次

java - 如何读取 HTTP 输入流?

javascript - 如何以类似的方式从 javascript 快速调用 android 和 iOS 中的函数

android - 空指针异常 - BaseAdapter notifyDataSetChanged

java - 我可以以编程方式打开/关闭对讲吗?