我在一个Activity(LinearLayout)中有2 AutoCompleteTextViews
和几个additional controls
(radiogroup、button等)。
例如:用户单击AutoCompleteTextView,控件获得焦点。因此光标开始 Flink ,自动完成下拉列表和键盘显示。这很好。但是,如果user now clicks on of the radio buttons
(或其他控件),AutoCompleteTextView is still blinking
中的光标和键盘仍显示。
如何让焦点自动消失?
**编辑:**xml代码
<AutoCompleteTextView
android:id="@+id/ediFrom"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:text="" />
4条答案
按热度按时间iyr7buue1#
唯一对我有效的解决方案是添加以下行
到AutoCompleteTextView的父视图(如线性布局等)
ycl3bljg2#
您是否尝试过
each view
的android:focusableInTouchMode="true"
代码片段http://android-developers.blogspot.in/2008/12/touch-mode.html
oipij1gg3#
为了避免设置其他所有内容
focusable
(如果您碰巧在许多其他布局中使用相同的文本视图,这会很痛苦),我们选择覆盖逻辑,以在活动级别拦截触摸屏事件:如果你把这个逻辑放在你的基本Activity中,任何一个有编辑文本的屏幕,当你点击它外面的任何地方时,都会触发
onFocusChange
。通过听onFocusChange
,你可以在另一个视图上触发clearFocus
或requestFocus
。这或多或少是一个技巧,但至少你不必为许多布局上的任何其他项目设置可聚焦。请访问http://developer.android.com/reference/android/app/Activity.html#dispatchTouchEvent(安卓系统的视图和运动事件)
egdjgwm84#
当下拉菜单被取消时(选择值,单击外部),可以使用
setOnDismissListener()
方法清除焦点这个Kotlin代码对我来说很好用,你也可以很容易地把它重写成java: