我正在努力使我的应用程序对键盘驱动导航友好,我在所有可操作项目周围添加了焦点突出显示。在触摸模式下操作时,我无法移除焦点突出显示。换句话说,我不希望在不使用键盘导航时可以看到焦点突出显示。这可能吗?我正在我的选择器XML中尝试项目状态的几种变体,以及使用不同的focusableInTouchMode值进行玩弄,但我没有得到任何结果。我有一个EditText定义如下:
<EditText
android:id="@+id/editText1"
android:background="@drawable/edit_text_selector"
android:focusable="true"
android:enabled="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/textView2"
android:layout_toRightOf="@+id/textView2"
android:ems="10"
android:inputType="textEmailAddress" >
<requestFocus />
</EditText>
我在这里定义了selctor(许多状态排列被注释掉了):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true">
<layer-list>
<item android:drawable="@drawable/focusbox"/>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="8dp" />
<stroke android:width="1dp" android:color="#044401" />
<solid android:color="@color/edit_text_color" />
</shape>
</layer-list>
</item>
<!-- <item android:state_focused="true" android:state_selected="false" android:state_activated="false">
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="8dp" />
<stroke android:width="1dp" android:color="#044400" />
<solid android:color="@color/edit_text_color" />
</shape>
</item>
<item android:state_focused="false" android:state_selected="true">
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="8dp" />
<stroke android:width="1dp" android:color="#044400" />
<solid android:color="@color/edit_text_color" />
</shape>
</item>
--> <item android:state_focused="false">
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="8dp" />
<stroke android:width="1dp" android:color="#044400" />
<solid android:color="@color/edit_text_color" />
</shape>
</item>
</selector>
我从我学到的东西中得出的唯一想法是,我可以通过编程方式检测视图是否处于触摸模式,并使用它来决定是否显示焦点突出显示。我目前有一个XML drawable,它绘制了一个焦点框,我可以用Java重新编写为自定义绘图,但问题是drawable无法查询触摸模式,也无法访问其视图。还有其他选择吗?