2011-10-07 26 views
139

Jak dodać obramowanie do przycisku? Czy można to zrobić bez odwoływania się do zdjęć?Android - obramowanie przycisku

+0

http: //przepełnienie stosu.com/questions/7626554/android-draw-border-in-viewview/7626628 # 7626628 Tak samo jak tutaj :) – asenovm

Odpowiedz

305

Krok 1: Utwórz plik o nazwie: my_button_bg.xml

Krok 2: Umieść ten plik w res/drawables.xml

Krok 3: Wstaw poniżej kodu

<?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> 

Krok 4: Użyj kodu „android: tło =” @ rozciągliwej/my_button_bg”w razie potrzeby np poniżej:

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Your Text" 
    android:background="@drawable/my_button_bg" 
    /> 
+1

dzięki. + 1 do tego. Po zapisaniu go w folderze do rysowania jako pliku xml. Jak możemy użyć to ? –

+1

@AndroidPower można go używać z R.drawable.FILE_NAME – slayton

+2

Gdzie ten kod idzie, w kodzie .axml dla znaczników dla przycisku? Czy idzie w pliku typu styles.xml? – theJerm

13

tworzyć rozciągliwej/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> 

i wskazać ją jako @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" /> 
14

Tworzenie button_border.xml plik w folderze rozciągliwej.

RES/rozciągliwej/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> 

i przycisk dodaj do układu działalności XML i ustawić tło 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" /> 
5

Jeśli twój przycisk nie wymaga przezroczystego tła, możesz utworzyć iluzję ramki przy użyciu układu ramki. Wystarczy dostosować atrybut "dopełnienie" FrameLayout, aby zmienić grubość obramowania.

<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> 

Nie jestem pewien, czy pliki xml kształtu mają dynamicznie edytowalne kolory obramowania. Ale wiem, że dzięki temu rozwiązaniu można dynamicznie zmieniać kolor obramowania, ustawiając tło FrameLayout.

1

w układzie 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" /> 

w folderze rozciągliwej, utwórz plik o styl obramowania przycisku w:

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 
    <stroke 
     android:width="1dp" 
     android:color="#f43f10" /> 
</shape> 

aw swojej działalności:

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(); 
     } 
    });