Android-bordure pour bouton

Comment ajouter une bordure à un bouton? Est-il possible de le faire sans recourir à l'utilisation d'images?

167
demandé sur jeffreyveon 2011-10-07 20:55:00

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"
    />
352
répondu Pedantic 2017-12-22 02:42:49

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" />
26
répondu Karina Sen 2015-09-03 06:28:07

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"

16
répondu dymmeh 2011-10-07 17:07:04

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" />
13
répondu vitperov 2014-11-02 21:52:23

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

5
répondu himura 2012-07-11 20:40:31

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.

5
répondu Rock Lee 2015-10-26 19:13:39

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();
        }
    });
4
répondu Raseem Ayatt 2016-12-01 22:15:18