如何在触摸模式下避免焦点突出显示?

时间:2013-08-26 17:08:31

标签: android focus

我正在努力使我的应用程序对键盘驱动导航友好,我在所有可操作项目周围添加了焦点突出显示。在触摸模式下操作时,我无法移除焦点突出显示。换句话说,我不希望在不使用键盘导航时可以看到焦点突出显示。这可能吗?我正在我的选择器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无法查询触摸模式,也无法访问其视图。还有其他选择吗?

0 个答案:

没有答案