2010-02-25 29 views
8

¿Es posible crear un botón con un diseño xml personalizado?Botón con diseño XML personalizado

que tienen este diseño:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="1dp" 
    android:background="#7e7e7e"> 

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="10dp" 
    android:background="#f9f9f9"> 

<TextView 
    android:id="@+id/TextView01" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:text="ButtText" 
    android:textColor="#000000"> 
</TextView> 

<ImageView 
    android:id="@+id/ImageView01" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/arrow" 
    android:layout_alignParentRight="true"> 
</ImageView> 

</RelativeLayout> 
</LinearLayout> 

Ahora quiero utilizar esto en un botón. ¿Alguien sabe cómo puedo hacer esto?
Estaba pensando si tenía el archivo Button.java que extendía Button. Y luego setView (R.layout.mylayout.xml); ... pero eso era de fácil, y es evidente que no trabaja

Saludos Martin

Respuesta

7

Usted no puede utilizar, literalmente, que el diseño de la cara de un Button. Sin embargo, puede lograr un aspecto similar utilizando la propiedad android:drawableRight en un Button.

+0

todo es tan fácil. ¡Gracias por la información de hoy! :) – f0rz

20

He estado lidiando con esto recientemente porque quería poner dos textviews en un botón. Tienes que elegir:

  1. Extender clase Button y utilizarlo en su diseño
  2. utilizar un diseño en restaurantes en vez de un botón y arrastre dentro everithing que necesita y hacer que se puede hacer clic añadiendo esta parametter a ella:

    android:clickable="true" 
    

Después de que se puede modificar te apariencia de su diseño mediante la definición de la

android:background="@drawable/my_background" 

para dar a ella una cara "de botón" y el comportamiento

/res/drawable/mi_background.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" android:drawable="@color/black"/> 
    <item android:state_pressed="true" android:state_enabled="false" android:drawable="@color/black" /> 
    <item android:drawable="@color/white"/> 
</selector> 
0

Puede utilizar un RelativeLayout simplemente superponer la vista botón personalizado en la parte superior de un botón real como este:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <!-- Your custom button layout --> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#7e7e7e" 
     android:padding="1dp"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="#f9f9f9" 
      android:padding="10dp"> 

      <TextView 
       android:id="@+id/TextView01" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:text="ButtText" 
       android:textColor="#000000" /> 

      <ImageView 
       android:id="@+id/ImageView01" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:background="@drawable/jobs_menu" /> 

     </RelativeLayout> 
    </LinearLayout> 
</RelativeLayout> 
Cuestiones relacionadas