Android:EditText 重新启用后无法获得焦点

Posted

技术标签:

【中文标题】Android:EditText 重新启用后无法获得焦点【英文标题】:Android: EditText cannot gain focus after being re-enabled 【发布时间】:2011-03-08 06:28:33 【问题描述】:

我有一个带有三个选项卡的 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)。

【问题讨论】:

重要提示:此行为仅在触摸时出现(当我单击 EditText 时,但它与轨迹球一起正常工作(这就是我尝试 setFocusableInTouchMode 方法的原因)。 【参考方案1】:

解决方法:

同时使用setFocusableInTouchModesetFocusable

【讨论】:

谢谢 - 这是一个巨大的帮助! (关于为什么这是必要的任何想法?) 哇,这让我免于马拉松式调试 也可以与 setFocusableInTouchMode(true) 配合使用,谢谢 但它可以用 .setTextIsSelectable(true) 语句选择吗?我发现文本是不可选择的(复制或剪切)。如何让它可选?

以上是关于Android:EditText 重新启用后无法获得焦点的主要内容,如果未能解决你的问题,请参考以下文章

Android 工作问题解决记录

如何以科学计数法启用用户输入到android edittext

Android 中listview中嵌套edittext问题

如何启用 EditText 以输入特殊字符,如 ~!#$%^&*()_-[]?和其他 app:endIconMode="password_toggle" 在android中

Android EditText默认不获得焦点

Android-------- AlertDialog中EditText无法弹出输入法的解决