2012-04-07 11 views
7

Mam kilka przycisków w mojej bieżącej aplikacji. Wszystkie są identyczne, z wyjątkiem ich tekstu i tagu. Plik main.xml byłby o wiele ładniejszy, gdybym nie musiał powtarzać wszystkich informacji konfiguracyjnych przycisku dla każdego przycisku.Czy mogę utworzyć szablon przycisku Androida?

Czy istnieje sposób, aby zdefiniować przycisk jako szablon, a następnie zrobić więcej, używając go jako szablonu?

W tym przykładzie, mam około 10 z następujących czynności:

<Button 
      android:id="@+id/button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="10dp" 
      android:text="Y" 
      android:typeface="monospace" 
      android:textSize="12pt" 
      android:tag="Y" 
      android:textColor="@color/button_text" 
      android:background="@drawable/grey_blank_48x48" 
      android:onClick="onButtonClicked"/> 

Byłoby miło, gdybym miał jedną, a potem 9 z nich:

<Button2 
      android:text="N" 
      android:tag="N"/> 

Resolution

To było prawie tak, jak @Luksprog powiedział:

<style name="ASR33_button" > 
    <item name="android:id">@+id/button</item> 
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:padding">10dp</item> 
    <item name="android:textColor">@color/button_text</item> 
    <item name="android:background">@drawable/grey_blank_48x48</item> 
    <item name="android:onClick">onButtonClicked</item> 
    <item name="android:typeface">monospace</item> 
    <item name="android:textSize">12pt</item> 
</style> 

z main.xml posiadające takie rzeczy:

<Button 
      style="@style/ASR33_button" 
      android:tag="Y" 
      android:text="Y" 
      /> 

    <Button 
      style="@style/ASR33_button" 
      android:tag="N" 
      android:text="N" 
      /> 

To niesie dzień.

Odpowiedz

12

nam style:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="btnlook" > 
     <item name="android:id">@+id/button</item> 
     <item name="android:layout_width">wrap_content</item> 
     <item name="android:layout_height">wrap_content</item> 
     <item name="android:padding">10dp</item> 
     <item name="android:textColor">@color/button_text</item> 
     <item name="android:background">@drawable/grey_blank_48x48</item> 
     <item name="android:onClick">onButtonClicked</item> 
     <item name="android:typeface">monospace</item> 
     <item name="android:textSize">12pt</item> 
    </style> 
</resources> 

a następnie w układzie xml:

<Button 
      style="@style/btnlook" 
      android:text="N" 
      android:tag="N"/> 
+0

Bah, po prostu powiesz: str. Nie wiem dlaczego nikt nie zasugerował ... –

+0

+1 Cóż, raczej myślałem, że coś takiego powinno istnieć ... –

0

Można utworzyć selector

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <solid android:color="#AAFFFFFF"/> 
    <corners android:bottomRightRadius="7dp" 
     android:bottomLeftRadius="7dp" 
     android:topLeftRadius="7dp" 
     android:topRightRadius="7dp"/> 

i ustawić 10 Przycisk android:background="@drawable/that_selecter"

3

Można zrobić własny widok, który rozciąga się przycisk i ustawia wszystkie rzeczy, które są powtarzalne. Następnie możesz go używać zgodnie z opisem, ale z pełną nazwą, a nie tylko skrótem.

class MyButton extends Button { 
    public MyButton() { 
     // Set the values you want 
    } 
} 

I w XML:

<com.me.myapp.MyButton 
    android:text="N" 
    android:tag="N" /> 
+0

+1 to jest bardzo pomocne. –

0

Jedynym sposobem, aby to zrobić, aby niestandardowy przycisk instacji przycisk.

Powiązane problemy