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));
3 Réponses :
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>
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.
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.
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;)
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>