2012-04-07 18 views
7

Ho diversi pulsanti nella mia app corrente. Sono tutti identici tranne per il loro testo e un tag. Il main.xml sarebbe molto più bello se non dovessi ripetere tutte le informazioni di configurazione del pulsante per ogni pulsante.Posso creare un modello di pulsante Android?

C'è un modo per definire un pulsante come modello e quindi utilizzarlo di più come modello?

In questo esempio, ho circa 10 delle seguenti operazioni:

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

Sarebbe bello se ho avuto uno, e poi 9 di questi:

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

Risoluzione

Era quasi come @Luksprog ha detto:

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

con le main.xml avere cose come questa:

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

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

Questo porta il giorno.

risposta

12

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

e poi nel layout xml:

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

Bah, sto per dire che: p. Non so perché nessuno ha suggerito ... –

+0

+1 Beh, ho pensato che qualcosa del genere dovrebbe esistere ... –

0

È possibile creare un 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"/> 

E impostare il pulsante 10 android:background="@drawable/that_selecter"

3

È possibile effettuare una visualizzazione personalizzata che si estende pulsante e imposta tutte le cose che si ripete. Quindi puoi usarlo come hai descritto, ma con un nome completo, non solo un breve nome.

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

E in XML:

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

+1 questo è molto utile. –

0

L'unico modo per fare questo per rendere pulsante personalizzato sottoclasse il pulsante.

Problemi correlati