Bouton personnalisé avec fond drawable: Différence de remplissage dans Android 4 vs Android 2.3
Le code suivant permet d'afficher un bouton personnalisé dans Android. Malheureusement, toutes ces valeurs de remplissage à ces différents endroits affecter la façon dont le bouton est affiché que pour Android 2.3, mais sur Android 4.X il n'a pas d'effet, c'est à dire le rembourrage est toujours la même, indépendamment de ce que vous définissez ici. Pourquoi?
La mise en page XML:
<Button
android:id="@+id/sample_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_caption"
android:padding="6dp"
android:layout_marginBottom="6dp"
android:layout_marginRight="6dp"
style="@style/CustomButton"
android:textSize="16sp" />
Le style:
<style name="CustomButton">
<item name="android:layout_gravity">center_horizontal</item>
<item name="android:padding">6dp</item>
<item name="android:background">@drawable/custom_button</item>
<item name="android:textColor">#ffffff</item>
<item name="android:gravity">center</item>
<item name="android:textStyle">bold</item>
</style>
Le drawable:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<solid
android:color="#60ff0000" />
<stroke
android:width="1dp"
android:color="#ffffff" />
<corners
android:radius="4dp" />
<padding
android:left="6dp"
android:top="6dp"
android:right="6dp"
android:bottom="6dp" />
</shape>
</item>
<item>
<shape>
<solid
android:color="#90ff0000" />
<stroke
android:width="1dp"
android:color="#ffffff" />
<corners
android:radius="4dp" />
<padding
android:left="6dp"
android:top="6dp"
android:right="6dp"
android:bottom="6dp" />
</shape>
</item>
</selector>
Quand j'ai mis toutes ces valeurs de remplissage pour une petite valeur comme le 2, le bouton apparaît presque sans un rembourrage sur Android 2.3.3 (probablement correct) mais avec un rembourrage qui est encore très importante sur Android 4.X (probablement à tort). Quelqu'un peut-il savoir pourquoi?
source d'informationauteur caw
Vous devez vous connecter pour publier un commentaire.
Android Holo thème un minWidth et minHeight dans le système styles.xml des ressources pour
Holo.Widget de.Bouton
qui précise les règles à respecter en plus de ceux utilisés par le non-holo bouton,Widget.Bouton
. Même avec un petit titre du bouton, le bouton de prendre 64x48dip d'Android 4.2.David réponse peut en effet être le problème.
Cependant, je pense que si le min largeur et la hauteur sont 48/64dp, la modification de rembourrage de 6dp à 2pd ou vice versa, ne devrait pas faire une grande différence, sauf si vous réelle bouton est déjà droit à ce 48/64 dp taille.
Si c'est le cas, je me demande si ça pourrait être un bug sur Android.
Si pas de rembourrage sur le point de Vue est spécifié, le rembourrage à l'arrière-plan dessiné est utilisé (le cas échéant)
Si rembourrage sur le point de Vue est spécifié, tout rembourrage à l'arrière-plan dessiné est ignoré et le rembourrage situé sur la Vue est utilisée.
Juste pour le plaisir de le faire, avez-vous essayé de faire des remplissages de grande taille plutôt petite et voir si cela a un quelconque effet?