2012-04-20 9 views
8

Sto tentando di estendere la classe del pulsante Android e di utilizzare un file di layout xml.Come estendere un pulsante Android e utilizzare un file di layout xml

Il motivo per cui desidero utilizzare un file di layout xml è che il mio pulsante deve utilizzare uno stile e, per quanto ne so, non esiste un modo per impostare lo stile in modo programmatico.

public class BuyButton estende pulsante {...}

<?xml version="1.0" encoding="utf-8"?> 
<Button 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    style="@style/customButton" 
/> 

modo che io possa chiamare:

new BuyButton(activity); 

e farlo creare un pulsante che ha lo stile applicato a esso.

(io sono aperto anche ad altri modi per ottenere lo stesso risultato)

risposta

15

creare una classe che estende Button.

public class BuyButton extends Button { 

    public BuyButton(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 

} 

Nel vostro riferimento XML che classe personalizzata direttamente.

<?xml version="1.0" encoding="utf-8"?> 
<your.package.name.BuyButton 
xmlns:android="http://schemas.android.com/apk/res/android" 
style="@style/customButton"/> 
+2

che sto ricevendo un errore di runtime. si sta lamentando per l'xml. 04-20 16: 30: 19,852: E/AndroidRuntime (18583): android.view.InflateException: linea di file XML Binary # 2: Errore di gonfiaggio classe client.views.buttons.BuyButtonView – ajma

+0

Thank u! Grazie! Grazie! risposta perfetta! – gran33

-1

Vedere la sezione Button Style. Basta impostare uno sfondo personalizzato disegnabile.

+1

NON POSSO fare uno sfondo personalizzato disegnabile. Deve essere uno stile. – ajma

1

Nel layout .xml una modifica di una riga al tipo di controllo (passaggio da pulsante al tipo di pulsante personalizzato) risolverà il problema di trasmissione.

Per il tuo BuyButton sottoclasse, trova la sezione del pulsante in .xml; può sembrare qualcosa di simile:

<Button 
      android:id="@+id/btnBuy" 
      android:layout_width="188dp" 
      android:layout_height="70dp" 
      android:padding="12dp" 
      android:text="Buy" /> 

e modificarlo in questo modo:

<yourpackage.name.BuyButton 
      android:id="@+id/btnBuy" 
      android:layout_width="188dp" 
      android:layout_height="70dp" 
      android:padding="12dp" 
      android:text="Buy" /> 
+0

inoltre: deve avere un costruttore nella sottoclasse che consenta l'inflazione; puoi anche creare altri costruttori con firme diverse, ma il costruttore di base che prende i parametri di contesto e attributi deve essere definito nella sottoclasse. vedere: https://sholtz9421.wordpress.com/2012/03/22/correct-way-to-subclass-android-views/ –

Problemi correlati