merci. + 1 pour cela.Après l'avoir enregistré dans un dossier dessinable en tant que fichier xml.Comment pouvons-nous l'utiliser?
Android Killer
1
@AndroidPower, vous pouvez l'utiliser avec R.drawable.FILE_NAME
slayton
2
Où va ce code, dans le code .axml du balisage du bouton? Va-t-il dans un fichier de type styles.xml?
theJerm
J'ai utilisé juste le trait (et l'ai rendu blanc) pour tracer un bouton avec du blanc. Fonctionne très bien avec 4.4 mais en 4.0.3 le bouton devient noir - des idées pourquoi?
Kibi
1
@Kibi désolé, quelqu'un a modifié ma réponse et vous a donné des conseils incorrects. Je l'ai changé mais je suis choqué que quelqu'un puisse modifier une réponse acceptée et changer l'utilité.
Pedantic
57
• Android Official Solution
Depuis l' introduction d' Android Design Support v28 , il est facile de créer un bouton avec bordure à l'aide de MaterialButton. Cette classe fournit des styles de matériaux mis à jour pour le bouton dans le constructeur. À l'aide de app:strokeColoret app:strokeWidthvous pouvez créer une bordure personnalisée comme suit:
<com.google.android.material.button.MaterialButtonstyle="@style/Widget.AppCompat.Button.Borderless"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="UNFILLED MATERIAL BUTTON"android:textColor="@color/green"android:textSize="15sp"app:backgroundTint="@android:color/transparent"app:cornerRadius="8dp"app:rippleColor="#33AAAAAA"app:strokeColor="@color/green"app:strokeWidth="2dp"/>
<android.support.design.button.MaterialButtonstyle="@style/Widget.AppCompat.Button.Borderless"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="UNFILLED MATERIAL BUTTON"android:textColor="@color/green"android:textSize="15sp"app:backgroundTint="@android:color/transparent"app:cornerRadius="8dp"app:rippleColor="#33AAAAAA"app:strokeColor="@color/green"app:strokeWidth="2dp"/>
Je vois que vous avez déclaré textColor et textSize dans votre bouton XML. Que suggérez-vous si quelqu'un a déjà un style défini pour textColor et textSize et qu'il souhaite maintenant ajouter le style="@style/Widget.AppCompat.Button.Borderless"?
Comme vous l'avez mentionné, il est possible de définir un style qui hérite du style sans bordure, puis d'ajouter des attributs préférés en fonction du style de base.
aminographie
Légèrement OT, mais quelle est la 4ème icône intéressante dans la barre d'action au bas du GIF? (Il semble également que le GIF ait été récupéré à partir d'un véritable appareil, cool)
i336_
1
Peut-être que je me trompe mais pour moi dans le • Bouton Bordé
Non Rempli
37
Créez un button_border.xmlfichier dans votre dossier dessinable.
Si votre bouton ne nécessite pas d'arrière-plan transparent, vous pouvez créer l'illusion d'une bordure à l'aide d'une disposition de cadre. Ajustez simplement l'attribut "padding" de FrameLayout pour changer l'épaisseur de la bordure.
<FrameLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="1sp"android:background="#000000"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Your text goes here"android:background="@color/white"android:textColor="@color/black"android:padding="10sp"/></FrameLayout>
Je ne sais pas si les fichiers XML de forme ont des couleurs de bordure modifiables dynamiquement. Mais je sais qu'avec cette solution, vous pouvez changer dynamiquement la couleur de la bordure en définissant l'arrière-plan FrameLayout.
GradientDrawable gd1 =newGradientDrawable();
gd1.setColor(0xFFF43F10);// Changes this drawbale to use a single color instead of a gradient
gd1.setCornerRadius(5);
gd1.setStroke(1,0xFFF43F10);
cancelskill.setBackgroundDrawable(gd1);
cancelskill.setOnClickListener(newView.OnClickListener(){@Overridepublicvoid onClick(View v){
cancelskill.setBackgroundColor(Color.parseColor("#ffffff"));
cancelskill.setTextColor(Color.parseColor("#f43f10"));GradientDrawable gd =newGradientDrawable();
gd.setColor(0xFFFFFFFF);// Changes this drawbale to use a single color instead of a gradient
gd.setCornerRadius(5);
gd.setStroke(1,0xFFF43F10);
cancelskill.setBackgroundDrawable(gd);
finish();}});
Je sais que d'un an de retard, mais vous pouvez aussi créer une image de chemin 9 Il y a un outil qui vient avec Android SDK qui contribue à créer telle image Voir ce lien: http://developer.android.com/tools/help/draw9patch .html
PS: l'image peut également être mise à l'échelle à l'infini
Réponses:
Étape 1: créer un fichier nommé: my_button_bg.xml
Étape 2: placez ce fichier dans res / drawables.xml
Étape 3: insérer le code ci-dessous
Étape 4: Utilisez le code "android: background =" @ drawable / my_button_bg "si nécessaire, par exemple ci-dessous:
la source
•
Android Official Solution
Depuis l' introduction d' Android Design Support v28 , il est facile de créer un bouton avec bordure à l'aide de
MaterialButton
. Cette classe fournit des styles de matériaux mis à jour pour le bouton dans le constructeur. À l'aide deapp:strokeColor
etapp:strokeWidth
vous pouvez créer une bordure personnalisée comme suit:1. Lorsque vous utilisez
androidx
:build.gradle
• Bouton bordé:
• Bouton bordé non rempli:
2. Lorsque vous utilisez
appcompat
:build.gradle
style.xml
Assurez-vous que votre thème d'application hérite de
Theme.MaterialComponents
au lieu deTheme.AppCompat
.• Bouton bordé:
• Bouton bordé non rempli:
Résultat visuel
la source
style="@style/Widget.AppCompat.Button.Borderless"
?Créez un
button_border.xml
fichier dans votre dossier dessinable.res / drawable / button_border.xml
Et ajoutez un bouton à votre disposition d'activité XML et définissez l'arrière-plan
android:background="@drawable/button_border"
.la source
créez drawable / button_green.xml:
et le signaler comme
@drawable/button_green
:la source
Veuillez regarder ici pour créer une forme dessinable http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
Une fois que vous avez fait cela, dans le XML de votre jeu de boutons
android:background="@drawable/your_button_border"
la source
Si votre bouton ne nécessite pas d'arrière-plan transparent, vous pouvez créer l'illusion d'une bordure à l'aide d'une disposition de cadre. Ajustez simplement l'attribut "padding" de FrameLayout pour changer l'épaisseur de la bordure.
Je ne sais pas si les fichiers XML de forme ont des couleurs de bordure modifiables dynamiquement. Mais je sais qu'avec cette solution, vous pouvez changer dynamiquement la couleur de la bordure en définissant l'arrière-plan FrameLayout.
la source
Dans votre mise en page XML:
Dans le dossier dessinable, créez un fichier pour le style de bordure du bouton:
Et dans votre activité:
la source
Je sais que d'un an de retard, mais vous pouvez aussi créer une image de chemin 9 Il y a un outil qui vient avec Android SDK qui contribue à créer telle image Voir ce lien: http://developer.android.com/tools/help/draw9patch .html
PS: l'image peut également être mise à l'échelle à l'infini
la source