1
votes

Comment créer un bouton avec des coins arrondis et définir n'importe quelle couleur par programme au moment de l'exécution

J'essaie de créer un bouton de widget avec des coins arrondis que je peux également changer en TOUTES les couleurs que je veux. J'utilise actuellement un fichier de mise en page xml pour créer les coins arrondis. Le problème est que lorsque je change de couleur, le bouton reprend sa forme rectangulaire. Je voudrais qu'il conserve au moins ses coins arrondis.

Je ne trouve pas de solution à ce problème, mais des idées ont été reçues avec gratitude. Ce n'est peut-être pas possible, mais j'ai pensé que je demanderais. Le point principal est que j'essaie de le faire avec des vues à distance dans le cadre d'un widget PAS dans une activité facile à faire.

Heureux de considérer toutes les options ...

Merci

RemoteViews views;
views = new RemoteViews(context.getPackageName(), R.layout.mycustomlayout);
views.setInt(R.id.widgetbutton,"setBackgroundColor", Color.parseColor(widgethexcolor));


0 commentaires

3 Réponses :


0
votes

Créez un fichier de ressources de mise en page dans un dossier pouvant être dessiné et appelez-le comme android: background = "@ drawable / shape.xml" à l'intérieur des propriétés du bouton.

Au lieu de Gradient, vous pouvez également utiliser Solid

Code pour shape.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">

<corners
    android:radius="20dp"
    />

<gradient
    android:angle="45"
    android:centerX="35%"
    android:centerColor="#00d6a3"
    android:startColor="#9e9c97"
    android:endColor="#ffffff"
    android:type="linear"
    />
<size
    android:height="45dp"
    android:width="250dp"
    />
</shape>


2 commentaires

Désolé les gars - mais cela ne fonctionnera pas. Je n'ai évidemment pas été clair. La couleur doit être définie par programme et peut être n'importe quoi. Je ne peux pas créer de fichiers XML pour toutes les couleurs possibles.


Si vous rencontrez toujours le problème, veuillez l'indiquer clairement afin que nous puissions vous aider.



-1
votes

Commencez par créer un fichier de ressources dans un dossier dessinable, nommé par exemple: bg_white_rounded.xml

android:background="@drawable/bg_white_rounded.xml"

puis à votre disposition de bouton ajoutez:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="@dimen/space5"/>
    <solid android:color="@android:color/white"/>
</shape>

PS: modifiez la dimension souhaitée du rayon de l'espace.


2 commentaires

Désolé les gars - mais cela ne fonctionnera pas. Je n'ai évidemment pas été clair. La couleur doit être définie par programme et peut être n'importe quoi. Je ne peux pas créer de fichiers XML pour toutes les couleurs possibles.


Vous devez alors indiquer plus clairement ce que vous recherchez. Couleur * et d'abord vous ne pouvez pas créer de fichiers XML pour les couleurs, vous devez les déclarer comme couleurs. Deuxièmement, s'il s'agit d'un fichier statique, vous devez utiliser un fichier dessinable dédié pour cela avec la couleur donnée *. Si vous le récupérez à partir de l'analyse, vous devez écrire plus clairement ce que vous recherchez;)



0
votes

Veuillez vérifier ceci et suivre les étapes: 1. Créez un fichier de forme selon vos besoins 2. Définissez le fichier de forme comme arrière-plan de votre widget 3. À partir de votre fichier .java , changez la couleur selon les exigences.

bg_button_round_corners.xml

   customButton= (Button) view.findViewById(R.id.customButton);
   int color = Color.parseColor("#00FFFF");
   ((GradientDrawable)circleColor.getBackground()).setColor(color);

Fichier de mise en page:

   <Button
      android:id="@+id/customButton"
      android:layout_width="match_parent"
      android:layout_height="56dp"
      android:textSize="12sp"
      android:layout_gravity="center"
      android:background="@drawable/bg_button_round_corners"/>

Fichier d'activité:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" android:padding="10dp">
    <solid android:color="#CBCBCB"/>   <!-- you can use any color you want-->
    <corners android:radius="10dp"/>
</shape>


0 commentaires