21

我有一个带有三个选项卡的 TabHost。第一个选项卡的内容是自定义活动的意图,其内容视图是包含两个 EditText 和两个 CheckBox(和一个按钮)的相对布局。

每个复选框在选中时启用/禁用一个 EditText 和另一个复选框。我这样做了:

chkPolaziste.setOnCheckedChangeListener(new OnCheckedChangeListener()
    {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
        {
            if ( isChecked )
            {
                entryPolaziste.setFocusable(false);
                entryPolaziste.setEnabled(false);
                chkOdrediste.setFocusable(false);
                chkOdrediste.setEnabled(false);
            }
            else
            {
                entryPolaziste.setEnabled(true);
                entryPolaziste.setFocusable(true);
                chkOdrediste.setEnabled(true);
                chkOdrediste.setFocusable(true);
            }
        }
    });

那行得通。检查一个复选框后,它会禁用另一个复选框和他的eDittext,当我取消选中时,启用Edittext和其他复选框。但是,启用后,我无法在 EditText 中输入任何内容。当我单击它时,它只是轻弹片刻,然后将焦点切换到另一个视图。在我看来,控件似乎没有完全启用。

我还尝试使用 requestFocus() 将焦点集中在重新启用的 EditText 上,并尝试 setFocusableInTouchMode(),但都没有奏效。

我没有安卓设备,所以我只在模拟器中测试(最小 SDK 为 1.6)。

4

1 回答 1

43

解决方法:

使用setFocusableInTouchModesetFocusable,两者都使用。

于 2011-01-22T18:56:32.980 回答