Appliquer dynamiquement un style à un bouton

Résolu/Fermé
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 - 19 juil. 2020 à 21:12
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 - 22 juil. 2020 à 22:05
Bonjour à tous, après de nombreuses recherche, je ne parviens pas à comprendre comment attribuer un style à un bouton.

voici mon xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="bouton" parent="@android:style/Widget.Button">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:background">@drawable/bordure_bouton</item>
        <item name="android:textAllCaps">false</item>
        <item name="android:layout_centerInParent">true</item>
        <item name="android:padding">10dp</item>
    </style>
 
    <declare-styleable name="testBouton">
        <attr name="tBouton" format="reference"/>
    </declare-styleable>
 
    <style name="appT">
        <item name="tBouton">@style/bouton</item>
    </style>
</resources>


et voici mon java:

package fr.test;
 
import android.os.Build;
import android.os.Bundle;
import android.text.Html;
import android.text.Spanned;
import android.widget.Button;
import android.widget.RelativeLayout;
 
import androidx.appcompat.app.AppCompatActivity;
 
public class MainActivity extends AppCompatActivity
{
    private RelativeLayout layoutPrincipal = null;
 
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        layoutPrincipal = findViewById(R.id.layoutPrincipal);
 
        Button bouton2 = new Button(this, null, R.attr.tBouton);
        String textBouton2 = getResources().getString(R.string.cliquezMoi);
        Spanned t = Html.fromHtml(textBouton2);
 
        bouton2.setText(t);
        layoutPrincipal.addView(bouton2);
    }
}


de cette manière je n'ai que le texte du bouton qui s'affiche, le bouton en lui même ne s'affiche pas.

Merci à tous.



Configuration: Linux / Firefox 78.0

5 réponses

BunoCS Messages postés 15495 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 octobre 2024 3 909
21 juil. 2020 à 09:27
Tu peux le faire à la création du bouton

Button button = Button(context, null, 0, R.style.monBouton)

1
BunoCS Messages postés 15495 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 octobre 2024 3 909
20 juil. 2020 à 09:39
Bonjour,

Pourquoi ne pas créer ton bouton dans le layout XML et lui attribué ton style ?

En fait, tu mélanges 2 notions j'ai l'impression :
- la notion de style pour un composant système
- la personnalisation d'un composant custom

Tu es dans la 1ère catégorie, non ? Si oui, la partie suivante ne sert pas

    <declare-styleable name="testBouton">
        <attr name="tBouton" format="reference"/>
    </declare-styleable>
 
    <style name="appT">
        <item name="tBouton">@style/bouton</item>
    </style>
 
0
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 2
20 juil. 2020 à 20:36
Bonjour BrunoCS. En fait, ce que je cherche a faire c'est appliquer un style a un bouton qui est creer en java lors d'un evenement par exemple.
0
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 2
21 juil. 2020 à 20:18
Merci pour ta réponse, effectivement ta solution fonction mais uniquement sur lollipop ou supérieur. En fait, pour mon code, je me suis inspiré de cette méthode:

https://openclassrooms.com/forum/sujet/android-appliquer-un-style-a-un-bouton

Sinon j'ai toujours la possibilité de styler mon bouton java
0
BunoCS Messages postés 15495 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 octobre 2024 3 909
22 juil. 2020 à 09:00
Du coup, problème résolu ?
Note : les téléphones tournant sous Android < Lollipop ne sont plus supportés, ils n'ont plus accès au Play Store. Donc tu es dans la cible.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lamouchetsetse Messages postés 112 Date d'inscription samedi 2 août 2014 Statut Membre Dernière intervention 21 septembre 2021 2
22 juil. 2020 à 22:05
oui merci beaucoup
0