我有一个小型计时器应用程序和名为 etH
、etM
和 etS
的 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/