J'ai défini les fichiers ci-dessous dans le dossier res.
styles_apptheme.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated with http://Android-holo-colors.com -->
<resources xmlns:Android="http://schemas.Android.com/apk/res/Android">
<style name="ButtonAppTheme" parent="Android:Widget.Holo.Light.Button">
<item name="Android:background">@drawable/apptheme_btn_default_holo_light</item>
</style>
</resources>
themes_apptheme.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated with http://Android-holo-colors.com -->
<resources xmlns:Android="http://schemas.Android.com/apk/res/Android">
<style name="AppTheme" parent="@style/_AppTheme"/>
<style name="_AppTheme" parent="Theme.AppCompat.Light">
<item name="Android:editTextBackground">@drawable/apptheme_edit_text_holo_light</item>
<item name="Android:buttonStyle">@style/ButtonAppTheme</item>
</style>
</resources>
Dans mon fichier Layout.xml, j'ai défini mon bouton comme ci-dessous
<Button
Android:id="@+id/btnAddTitle"
Android:layout_below="@id/edEnterTitleValue"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/btn_AddTitle"
Android:layout_margin="20dp"
/>
Si j'ajoute la ligne ci-dessous à la vue des boutons ci-dessus,
Android:background="@style/ButtonAppTheme"
L'application se bloque en disant que la ressource drawable doit être définie pour l'attribut background.
J'ai donc créé le fichier dessinable ci-dessous - abc.xml
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_window_focused="false" Android:state_enabled="true"
Android:drawable="@drawable/apptheme_btn_default_normal_holo_light" />
<item Android:state_window_focused="false" Android:state_enabled="false"
Android:drawable="@drawable/apptheme_btn_default_disabled_holo_light" />
<item Android:state_pressed="true"
Android:drawable="@drawable/apptheme_btn_default_pressed_holo_light" />
<item Android:state_focused="true" Android:state_enabled="true"
Android:drawable="@drawable/apptheme_btn_default_focused_holo_light" />
<item Android:state_enabled="true"
Android:drawable="@drawable/apptheme_btn_default_normal_holo_light" />
<item Android:state_focused="true"
Android:drawable="@drawable/apptheme_btn_default_disabled_focused_holo_light" />
<item
Android:drawable="@drawable/apptheme_btn_default_disabled_holo_light" />
</selector>
Si je mets Android:background="@drawable/abc"
Je ne vois pas le style défini dans le bouton.
Alors, faites-moi savoir comment je peux définir le style du bouton.
Merci.
Ce serait plutôt simple si vous le faites de cette façon.
Créez d'abord un button_selector.xml dans un dossier dessinable.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<item Android:state_pressed="true" >
<shape Android:shape="rectangle" >
<corners Android:radius="5dp" />
<stroke Android:width="1dip" Android:color="@color/green_temp" />
<gradient Android:angle="-90" Android:startColor="@color/green_temp" Android:endColor="@color/green_temp" />
</shape>
</item>
<item Android:state_focused="true">
<shape Android:shape="rectangle" >
<corners Android:radius="5dp" />
<stroke Android:width="1dip" Android:color="#971E05" />
<solid Android:color="#58857e"/>
</shape>
</item>
<item >
<shape Android:shape="rectangle" >
<corners Android:radius="5dp" />
<stroke Android:width="1dip" Android:color="@color/bright_green" />
<gradient Android:angle="-90" Android:startColor="@color/green_temp" Android:endColor="@color/button_green" />
</shape>
</item>
</selector>
Ajoutez ces couleurs dans colors.xml du dossier values.
<!-- Green -->
<color name="green_temp">#23A96E</color>
<color name="green_dark">#159204</color>
<color name="bright_green">#02D8B0</color>
<color name="button_green">#10a54a</color>
Enfin, dans le bouton souhaité de layout.xml, placez l'arrière-plan du sélecteur ci-dessus.
<Button
Android:id="@+id/btnAddTitle"
Android:layout_below="@id/edEnterTitleValue"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/btn_AddTitle"
Android:background="@drawable/button_selector"
Android:layout_margin="20dp"
/>
Ensuite, tout sera fait, votre bouton sera de la couleur que vous souhaitez.
Android Button Maker est un outil en ligne pour générer du code de boutons pour Android Apps. Android API fournit des ressources dessinables où le fichier XML définit la forme géométrique, y compris les couleurs, la bordure et les dégradés) Ces boutons sont générés en fonction du code XML dessinable qui se charge plus rapidement que les boutons png normaux. Vous pouvez personnaliser les propriétés des boutons dans le panneau de configuration et obtenir le code source.
Vérifiez ce lien Button Maker
Pas besoin de casser le cerveau ... cet outil le rend simple
remplacer
Android:background="@style/ButtonAppTheme"
avec
style="@style/ButtonAppTheme"
et tout va bien!
Essayez ceci comme alternative. créer un dossier dessinable sous res puis créer des fichiers xml et copypaste sous le code et essayez d'abord puis vous personnalisez selon vos besoins.
button_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<solid Android:color="#00acc1"/>
<stroke Android:width="2dp" Android:color="#ffffff"/>
<corners Android:radius="2dp"/> </shape>
button_bg_pressed.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<solid Android:color="#006064"/>
<stroke Android:width="1dp" Android:color="#ffffff"/>
<corners Android:radius="2dp"/> </shape>
button_selector.xml
<?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="true"
Android:drawable="@drawable/button_bg_pressed" />
<item Android:state_focused="false" Android:state_pressed="true"
Android:drawable="@drawable/button_bg_pressed" />
<item Android:drawable="@drawable/button_bg" /> </selector>
Et maintenant, dans votre bouton xml, définissez l'arrière-plan comme button_selector.xml
<Button
Android:id="@+id/btnAddTitle"
Android:layout_below="@id/edEnterTitleValue"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/btn_AddTitle"
Android:background="@drawable/button_selector"
Android:layout_margin="20dp"/>
Cela fera le travail pour vous. Vous pouvez personnaliser l'ensemble de votre style de bouton de cette façon.
Si vous souhaitez avoir l'animation par défaut du bouton par conception de matériau et changer la couleur du bouton, essayez ceci.
<Button
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:padding="@dimen/padding_12"
Android:text="button text here"
Android:theme="@style/NavyBtn" />
dans style.xml
<style name="NavyBtn" parent="Theme.AppCompat.Light">
<item name="colorButtonNormal">#020e39</item>
<item name="Android:textColor">#FFFFFF</item>
</style>