我有一个小型计时器应用程序,以及名为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);
}
通过按下重置按钮,我想通过调用方法做相反的事情(将焦点设置为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/