Android-bordure pour bouton
Comment ajouter une bordure à un bouton? Est-il possible de le faire sans recourir à l'utilisation d'images?
7 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
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#FFFFFF"
android:endColor="#00FF00"
android:angle="270" />
<corners android:radius="3dp" />
<stroke android:width="5px" android:color="#000000" />
</shape>
Étape 4: Utilisez le code "android: background=" @drawable / my_button_bg " si nécessaire, par exemple ci-dessous:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Your Text"
android:background="@drawable/my_button_bg"
/>
Créez un fichier button_border.xml
dans votre dossier drawable.
res/drawable/button_border.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#FFDA8200" />
<stroke
android:width="3dp"
android:color="#FFFF4917" />
</shape>
Et ajouter le bouton à votre mise en page D'activité XML et définir l'arrière-plan android:background="@drawable/button_border"
.
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_border"
android:text="Button Border" />
Regardez 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 pour votre bouton set android:background="@drawable/your_button_border"
Créer drawable / button_green.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#003000"
android:centerColor="#006000"
android:endColor="#003000"
android:angle="270" />
<corners android:radius="5dp" />
<stroke android:width="2px" android:color="#007000" />
</shape>
Et le signaler comme @drawable/button_green
:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@drawable/button_green"
android:text="Button" />
Je sais qu'il a environ un an de retard, mais vous pouvez également créer une image à 9 chemins Il y a un outil qui vient avec Android SDK qui aide à créer une telle image Voir ce lien: http://developer.android.com/tools/help/draw9patch.html
PS: l'image peut également être mise à l'échelle à l'infini
Si votre bouton ne nécessite pas d'arrière-plan transparent, vous pouvez créer une illusion de bordure en utilisant une disposition de cadre. Ajustez simplement L'attribut "padding" de FrameLayout pour modifier l'épaisseur de la bordure.
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="1sp"
android:background="#000000">
<Button
android: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 suis pas sûr 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.
Dans votre mise en page XML:
<Button
android:id="@+id/cancelskill"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp"
android:layout_weight="1"
android:background="@drawable/button_border"
android:padding="10dp"
android:text="Cancel"
android:textAllCaps="false"
android:textColor="#ffffff"
android:textSize="20dp" />
Dans le dossier drawable, créez un fichier pour le style de bordure du bouton:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<stroke
android:width="1dp"
android:color="#f43f10" />
</shape>
Et dans votre Activité:
GradientDrawable gd1 = new GradientDrawable();
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(new View.OnClickListener() {
@Override
public void onClick(View v) {
cancelskill.setBackgroundColor(Color.parseColor("#ffffff"));
cancelskill.setTextColor(Color.parseColor("#f43f10"));
GradientDrawable gd = new GradientDrawable();
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();
}
});