2016-01-28 3 views
0

Pourquoi le comportement par défaut de Button est-il state_activated = "false"?Android État par défaut du bouton

L'utilisation de ce sélecteur, il n'a jamais atteint la dernière ligne, il reste sur la deuxième ligne:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@color/colorPrimary" android:state_enabled="false"/> 
<item android:drawable="@color/colorPrimaryDark" android:state_activated="false"/> 
<item android:drawable="@color/colorAccent"/> 

Disons que ce sélecteur est partagée entre boutons et des dispositions qui posent comme un bouton, mais dans le cas de la mise en page, setActivated(false) est nécessaire pour changer l'arrière-plan.

+0

Je ne peux pas penser à un cas où un bouton serait «activé». Peut-être pourriez-vous lister les différents cas dont le bouton a besoin pour avoir une apparence visuelle différente, et nous pourrions partir de là. – ataulm

+0

J'ai une mise en page qui se présente comme un bouton, et à un certain point, il devient "inactif" mais toujours cliquable et activé afin d'apparaître désactivé et d'afficher un message d'avertissement lorsqu'on clique dessus. L'action de clic ne sera pas enregistrée lorsque l'option de clic de la disposition est désactivée, donc j'ai dû utiliser setActivated(). Sur certains autres modèles, certains boutons utilisent également le même sélecteur, mais ils n'ont qu'à répondre à state_pressed, comme le ferait un bouton normal, mais ils réagissent sur state_activated. Merci à vous, maintenant je sais pourquoi, mais je ne sais toujours pas comment réparer/contourner sans utiliser un autre sélecteur. – rexxar

+0

Je ne comprends pas ce que vous voulez dire par "inactif" mais toujours cliquable ". Vous pouvez utiliser 'setEnabled (false)' car il s'agit d'une méthode sur la vue, pas sur le bouton. Le comportement par défaut d'un bouton désactivé est de désactiver le clic (c'est-à-dire aucun état enfoncé). – ataulm

Répondre

0

L'état par défaut de activated est fausse pour toutes les vues. La meilleure façon de comprendre pourquoi est de considérer le cas des onglets sur un ViewPager.

L'onglet activated est celui qui représente la page visible - il n'est pas logique que plusieurs onglets soient activés en même temps.

J'ai mentionné dans mon blog post que activated pourrait être décrit comme "sélectionné" pour quelqu'un qui ne connaissait pas les termes utilisés par Android.

+0

Merci pour votre réponse, cela a été utile, maintenant je comprends parfaitement quelle est la différence entre ces deux états. Pourtant, je ne peux pas comprendre ce que mis dans le sélecteur qui peut résoudre mon problème. Je pense que je vais devoir ajouter un second sélecteur car les deux valeurs d'état par défaut de la vue sont égales mais les réactions initiales sont différentes. (J'étais celui qui commentait ton blog [au cas où ça ne t'aurait pas amené ici].) – rexxar

0

Vous devez ajouter des couleurs pour les états activés et activés. Comme ceci:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@color/colorPrimary" android:state_enabled="false"/> 
    <item android:drawable="@color/some_color" android:state_enabled="true"/> 
    <item android:drawable="@color/colorPrimaryDark" android:state_activated="false"/> 
    <item android:drawable="@color/some_color" android:state_activated="true"/> 
    <item android:drawable="@color/colorAccent"/> 
+0

J'ai essayé cela, mais le problème est toujours là, la disposition et le bouton réagissent différemment en raison de leurs états initiaux – rexxar