按钮单击时setFocusable

时间:2012-10-25 15:10:13

标签: 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();
        ...

问题:单击重置按钮后,edittexts无法变焦。我在最后一个方法中所做的就是

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

我做错了什么?

3 个答案:

答案 0 :(得分:3)

请尝试拨打EditText#setFocusableInTouchMode()

etH.setFocusableInTouchMode(true);
// etc.

当您在幕后调用setFocusable(false)时,会为您调用setFocusableInTouchMode(false)。但是,当您致电setFocusable(true)时,幕后没有其他任何事情发生,setFocusableInTouchMode()false

当您致电setFocusableInTouchMode(true)时,会发生类似的事情,setFocusable(true)会为您召唤。与setFocusableInTouchMode(false)之前相同,不会调用setFocuable(false)

source code取一个高峰,看看这个怪癖。

答案 1 :(得分:0)

您是否尝试过调试以确保按下重置按钮时实际调用了EnableEditTexts()?

答案 2 :(得分:0)

尝试使用_myEditText.clearFocus()失去焦点,然后使用_myEditText.requestFocus()重新获得它