Android:EditText重新启用后无法获得焦点
我有一个带有三个选项卡的 TabHost。第一个选项卡的内容是自定义活动的 Intent,其内容视图是包含两个 EditText 和两个复选框(和一个按钮)的相对布局。
每个复选框在选中时都会启用/禁用一个 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() ,但两者都不起作用。
我没有 Android 设备,所以我只在模拟器中测试它(最小 SDK 是 1.6)。
I have a TabHost with three tabs. The first tab's content is the Intent of a custom activity who's contentview is a relative layout containing two EditTexts and two CheckBoxes (and a button).
Each checkbox, when checked, enables/disables one EditText and the other checkbox. and I went about that like this:
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);
}
}
});
And that works. When one checkbox is checked, it disables the other checkbox and his EditText, and when I uncheck it, EditText and the other checkbox are enabled. But, after it's enabled, I can't type anything into the EditText. It just flicks for a moment when I
click on it, and switches focus to another view. It looks to me as though the control is not fully enabled.
I've also tried to force the focus on the re-enabled EditText with requestFocus(), and tried to setFocusableInTouchMode(), but neither had worked.
I don't have an android device, so I only test this in the emulator (Min SDK is 1.6).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
解决方法:
使用
setFocusableInTouchMode
和setFocusable
,两者都可以。Workaround:
Use
setFocusableInTouchMode
andsetFocusable
, both of them.