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

  • GetWidth y getHeight devuelven un cero
  • RunOnUiThread dentro de una vista
  • Cómo establecer la unidad para Paint.setTextSize ()
  • Zoom centrado en la vista personalizada - calculando las coordenadas de lienzo
  • Android View PerformClick () y callOnClick () diferencia
  • Textura para pintar objeto en Android?
  • Operación de setContentView de Android
  • GetLocationOnScreen () devuelve valores inesperados
  • Android: dibujar ImageView exactamente sobre la vista existente en una capa más profunda
  • Android ¿Cómo agregar la vista en el comienzo del diseño?
  • Id de una vista en una coordenada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.