Button的"state_focused"状态是什么?

aez*_*aez 27 android android-button

我希望按钮背景在单击按钮后保持特定颜色,并在按下其他按钮时再次更改颜色.我认为这是"以州为中心"的状态.

但是,我似乎只为我的Button按下了两个状态.

我是否正确理解state_focused状态,或者我的StateListDrawable(见下文)是错误的?

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_focused="true" android:state_pressed="false"><shape>
            <solid android:color="#00ff00" />
        </shape></item>
    <item android:state_pressed="true"><shape>
            <solid android:color="#ff0000" />
        </shape></item>
    <item><shape>
            <solid android:color="#0000ff" />
        </shape></item>

</selector>
Run Code Online (Sandbox Code Playgroud)

dmo*_*mon 43

state_focused每当按钮聚焦于使用dpad或轨迹球时.使用触摸时,视图通常不会显示聚焦状态.

  • 我相信您可以使用"focusableInTouchMode",但开发人员指南反对它:"触摸模式中的Fousable(请参阅View.setFocusableInTouchMode)是您可以自己设置的属性,无论是从代码还是从XML.但是,您应该使用它谨慎而且仅在非常特殊的情况下,因为它打破了与Android UI的正常行为的一致性."请参阅http://developer.android.com/resources/articles/touch-mode.html. (3认同)

ade*_*190 35

这里有一个按钮状态示例:

在此输入图像描述

fonte:http://developer.android.com/design/style/touch-feedback.html

  • 感谢ademar111190,但这个链接只显示了View在各个州的样子.我的问题是如何让按钮在按下后保持某种颜色,直到按下其他按钮. (3认同)

Bou*_*bon 15

https://developer.android.com/guide/topics/resources/drawable-resource.html

android:state_pressed
布尔值.如果在按下对象时使用此项目(例如触摸/点击按钮时),则为"true"; 如果此项应在默认的非按下状态下使用,则为"false".

android:state_focused
布尔值.如果在对象具有输入焦点时(例如当用户选择文本输入时)应该使用此项,则为"true"; 如果此项应在默认的非聚焦状态下使用,则为"false".

android:state_hovered
布尔值.如果对象被光标悬停时应使用此项,则为"true"; 如果此项应在默认的非悬停状态下使用,则为"false".通常,这种可绘制的可以是用于"聚焦"状态的相同的可绘制的.
在API级别14中引入.

android:state_selected
布尔值."true"如果在使用方向控件导航时对象是当前用户选择时应该使用此项(例如,当使用d-pad导航列表时); 如果未选择对象时应使用此项,则为"false".
当焦点(android:state_focused)不足时(例如,当列表视图具有焦点并且使用d-pad选择其中的项目时),将使用所选状态.

android:state_checkable
布尔值.如果对象可检查时应使用此项,则为"true"; 如果对象不可检查则应使用此项目时为"false".(仅当对象可以在可检查和不可检查的小部件之间转换时才有用.)

android:state_checked
布尔值.如果在检查对象时应使用此项,则为"true"; 如果在取消选中对象时应该使用"false".

android:state_enabled
布尔值."true"如果在启用对象时应该使用此项(能够接收触摸/点击事件); 如果在禁用对象时应该使用"false".

android:state_activated
布尔值.如果在将对象激活为持久选择时(例如,在持久导航视图中"突出显示"先前选择的列表项),则应使用此项;"true"; 如果在未激活对象时应该使用"false".
在API级别11中引入.

android:state_window_focused
布尔值.如果应用程序窗口具有焦点(应用程序位于前景)时应使用此项目,则为"true";如果应用程序窗口没有焦点时应使用此项目,则为"false"(例如,如果通知阴影为拉下或出现对话框).