setFocusableInTouchMode

setFocusableInTouchMode

我有一个小型计时器应用程序,以及名为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);
}


通过按下重置按钮,我想通过调用方法做相反的事情(将焦点设置为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/

10-10 06:18