在我的应用程序中,我有一个单独的EditText,一些TextViews按钮和一个微调器.我相信,我的EditText会获得焦点,因为它是此活动中唯一可聚焦的视图.我的EditText节目带有橙色边框和光标在场上.
现在我想从这个字段中删除焦点(我不希望光标和边框显示).有没有办法做到这一点?
通过做button.seFocusableInTouchMode()和我能够专注于按钮button.requestFocus().但这突出了按钮,显然不是我想要的.
小智 44
你有没有尝试过旧的好事 View.clearFocus()
Zar*_*aki 41
新的Android ..尝试过
getWindow().getDecorView().clearFocus();
Run Code Online (Sandbox Code Playgroud)
它对我有用..如果有什么不对,请帮我纠正:)
只是添加..你的布局应该有:
android:focusable="true"
android:focusableInTouchMode="true"
Run Code Online (Sandbox Code Playgroud)
Mar*_*ues 23
检查这个问题和选择的答案:停止EditText在活动启动时获得关注它很难看但它有效,据我所知,没有更好的解决方案.
Sto*_*eev 17
我将尝试解释如何从EditText视图中删除焦点(闪烁光标)以及更多细节和理解.通常这行代码应该有效
editText.clearFocus()
Run Code Online (Sandbox Code Playgroud)
但是当editText仍然具有焦点时可能会发生这种情况,并且这种情况正在发生,因为clearFocus()方法正在尝试将焦点设置回活动/片段布局中的第一个可聚焦视图.
因此,如果活动中只有一个可聚焦的视图,这通常是您的EditText视图,那么clearFocus()将再次将焦点设置为该视图,并且对于您来说,它将看起来clearFocus()不起作用.请记住,默认情况下EditText视图是可聚焦的(true),因此如果您的布局中只有一个EditText视图,它将远离焦点在屏幕上.在这种情况下,您的解决方案是在布局文件中找到父视图(某些布局,ex LinearLayout,Framelayout)并将其设置为此xml代码
android:focusable="true"
android:focusableInTouchMode="true"
Run Code Online (Sandbox Code Playgroud)
之后,当您执行editText.clearFocus()时,布局中的父视图将接受焦点,您的editText将清除焦点.
我希望这能帮助有人理解clearFocus()是如何工作的.
如果Edittext父布局Linear然后添加
android:focusable="true"
android:focusableInTouchMode="true"
Run Code Online (Sandbox Code Playgroud)
像下面
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="true">
<EditText/>
............
Run Code Online (Sandbox Code Playgroud)
当 Edittext 父布局是相对的然后
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
Run Code Online (Sandbox Code Playgroud)
喜欢
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true">
<EditText/>
............
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
146084 次 |
| 最近记录: |