Android ToggleButton

Siguiendo este artículo fui capaz de crear un botón de conmutación que está hecho de imágenes. Mi toggle no tiene ningún texto, sólo imágenes on / off.

Cuando mi botón de conmutación se crea está siendo estirado y pierde sus proporciones, ¿cómo puedo hacer que retenga su tamaño original?

Estas son las imágenes que estoy usando:

En http://s14.postimage.org/o4zh0nqzh/toggle_on_9.png

Off http://s17.postimage.org/mivfu6mbv/toggle_off_9.png

El código:

Main.xml:

<ToggleButton android:id="@+id/changeNumerals" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:checked="true" android:background="@drawable/toggle_bg" android:textOn="" android:textOff="" /> 

Drawable / toggle.xml:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="false" android:drawable="@drawable/toggle_off" /> <item android:state_checked="true" android:drawable="@drawable/toggle_on" /> </selector> 

Drawable / toggle_bg.xml:

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+android:id/background" android:drawable="@android:color/transparent" /> <item android:id="@+android:id/toggle" android:drawable="@drawable/toggle" /> </layer-list> 

Las dimensiones son "hardcoded" pero van a escala con el tamaño de su pantalla.

Así que el xml podría verse así:

 android:layout_width="64dp" android:layout_height="24dp" 

La documentación oficial de dps está aquí

Pruebe los siguientes atributos para <ToggleButton>

 android:background="@android:color/transparent" android:button="@drawable/toggle_bg" 

Deberia de funcionar. Buena suerte 🙂

Para soportar versiones de GINGERBREAD hasta las actuales, terminé usando:

 <ToggleButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/filterPhotos" android:checked="true" android:textOn="" android:textOff="" android:paddingLeft="5dp" android:drawableRight="@drawable/toggle_filter_photos" android:background="@null"/> 

Y el drawable toggle_filter_photos.xml:

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/picture_filter_icons" android:state_checked="true" /> <item android:drawable="@drawable/picture_inactive_filter_icons" /> </selector> 

Las otras soluciones anteriores no funcionaron bien para GINGERBREAD y más nuevas ya que los iconos no se mostrarían en absoluto (con el android:button GINGERBREAD) o la relación de aspecto se perdió (con android:background en JELLY_BEAN_MR1 (4.2.2) ).

  • ¿Cómo dejas de que ADT Logcat View aparezca automáticamente en Eclipse?
  • Dibuja un círculo en una vista (android)
  • Cómo detectar si la actividad principal de la vista se está destruyendo
  • ¿Qué el mensaje de logcat: "E / MoreInfoHPW_ViewGroup (2905): Vista de padre no es un TextView" significa?
  • ¿Existen widgets de hojas de cálculo para Android?
  • Personalizar Android PieChart
  • ¿Cómo obtener una vista más grande que su padre?
  • ¿Cuál es la unidad del valor del parámetro en el método onMeasure (int widthMeasureSpec, int heightMeasureSpec) de View Class?
  • Android View PerformClick () y callOnClick () diferencia
  • Visibilidad de un botón en el temporizador
  • GetLocationOnScreen () devuelve valores inesperados
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.