web-dev-qa-db-fra.com

Quel est l'état "state_focused" pour un bouton?

Je voudrais que l’arrière-plan du bouton reste d’une certaine couleur après avoir cliqué sur le bouton et change de couleur lorsque l’on appuie sur un autre bouton. Je pensais que c'était l'état "state_focused". 

Mais les deux seuls états que je semble avoir pour mon bouton sont pressés ou non pressés. 

Est-ce que je comprends bien l'état statefocused ou mon StateListDrawable (voir ci-dessous) est-il erroné?

<?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>
27
aez

state_focused est chaque fois que le bouton est concentré sur l’utilisation d’un pavé numérique ou du trackball. Les vues ne montrent généralement pas un état ciblé lors de l'utilisation du toucher.

41
dmon

voici un exemple de boutons indique:

enter image description here

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

35
ademar111190

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

Android:state_pressed
Boolean. "true" si cet élément doit être utilisé lorsque l'objet est enfoncé (par exemple lorsqu'un bouton est touché/cliqué); "false" si cet élément doit être utilisé dans l'état non pressé par défaut.

Android:state_focused
Boolean. "true" si cet élément doit être utilisé lorsque l'objet a le focus d'entrée (par exemple, lorsque l'utilisateur sélectionne une entrée de texte); "false" si cet élément doit être utilisé dans l'état par défaut non focalisé.

Android:state_hovered
Boolean. "true" si cet élément doit être utilisé lorsque l'objet est survolé par un curseur; "false" si cet élément doit être utilisé dans l'état par défaut, non survolé. Souvent, ce dessin peut être le même dessin que celui utilisé pour l'état "focalisé".
Introduit dans l'API niveau 14.

Android:state_selected
Boolean. "true" si cet élément doit être utilisé lorsque l'objet correspond à la sélection actuelle de l'utilisateur lors de la navigation avec une commande directionnelle (par exemple, lors de la navigation dans une liste avec un pavé directionnel); "false" si cet élément doit être utilisé lorsque l'objet n'est pas sélectionné.
L'état sélectionné est utilisé lorsque le focus (Android: state_focused) n'est pas suffisant (par exemple, lorsque la vue de liste est active et qu'un élément de celui-ci est sélectionné avec un pavé directionnel).

Android:state_checkable
Boolean. "true" si cet élément doit être utilisé lorsque l'objet est vérifiable; "false" si cet élément doit être utilisé lorsque l'objet n'est pas vérifiable. (Utile uniquement si l'objet peut faire la transition entre un widget vérifiable et non vérifiable.)

Android:state_checked
Boolean. "true" si cet élément doit être utilisé lors de la vérification de l'objet; "false" s'il doit être utilisé lorsque l'objet est désélectionné.

Android:state_enabled
Boolean. "true" si cet élément doit être utilisé lorsque l'objet est activé (capable de recevoir des événements de contact/clic); "false" s'il doit être utilisé lorsque l'objet est désactivé.

Android:state_activated
Boolean. "true" si cet élément doit être utilisé lorsque l'objet est activé en tant que sélection persistante (par exemple, pour "mettre en surbrillance" l'élément de liste précédemment sélectionné dans une vue de navigation persistante); "false" s'il doit être utilisé lorsque l'objet n'est pas activé.
Introduit dans API niveau 11.

Android:state_window_focused
Boolean. "true" si cet élément doit être utilisé lorsque la fenêtre de l'application a le focus (l'application est au premier plan), "false" si cet élément doit être utilisé lorsque la fenêtre de l'application n'a pas le focus (par exemple, si l'ombre de notification est tiré ou une boîte de dialogue apparaît).

15
Bourbon

Je sais qu'il est tard, du doco

Android: state_focused

State value for StateListDrawable, set when a view has input focus.

May be a boolean value, such as "true" or "false".

À partir de mes tests, l’accent est mis sur l’utilisateur lorsque l’utilisateur a accédé à l’élément de l’interface utilisateur à l’aide d’une interface utilisateur "suivante/précédente", comme sur un clavier virtuel ou un périphérique de contrôle à distance (Android TV), ou lorsque l’utilisateur appuie et maintient enfoncé un bouton sans le relâchant. J'ai dû utiliser state_pressed = true et state_focused = true pour présenter une interface utilisateur pouvant être pressée depuis longtemps.

0
angryITguy