Imagen establecida como fondo del botón de alternar es Android estirado

Tengo un botón Toggle como:

<ToggleButton android:id="@+id/tv_pmpSwitch" android:layout_width="0dp" android:layout_weight="0.1" android:layout_height="wrap_content" android:background="@drawable/toggle_view" android:layout_gravity="center_vertical" android:gravity="center" android:textOn="" android:textOff="" android:focusable="false" android:focusableInTouchMode="false" android:layout_centerVertical="true" android:paddingTop="16dp" android:layout_marginLeft="16dp" /> 

Y mi toggle_view dibujable es:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- When selected, use grey --> <item android:drawable="@drawable/ic_list_action" android:state_checked="true" /> <!-- When not selected, use white--> <item android:drawable="@drawable/ic_grid_action" android:state_checked="false"/> </selector> 

No entiendo por qué la imagen en el fondo se estira ?? He intentado varias imágenes de tamaño.

 <ToggleButton android:id="@+id/tv_pmpSwitch" android:layout_width="0dp" android:layout_height="28dp" android:layout_weight="0.1" android:background="@drawable/toggle_view" android:textOff="" android:textOn="" /> 

¡Intente esto en su código y ajuste solamente el parámetro de la altura de la disposición!

EDITAR

La forma de obtener una imagen no estirada es usar un mapa de bits y no un dibujable. Utilice el siguiente como su xml como su fondo.

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item > <bitmap android:src="@drawable/ic_list_action" android:gravity="center_vertical|left" /> </item> <item> <bitmap android:src="@drawable/ic_grid_action" android:gravity="center_vertical|left" /> </item> </layer-list> 

Después de probar algunas cosas encontré lo que estaba mal:
El peso era el culpable y el peso asignado era el estiramiento de la imagen.

 <LinearLayout android:layout_width="0dp" android:layout_weight="0.1" android:layout_height="wrap_content"> <ToggleButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_pmpSwitch" android:background="@drawable/ic_toggle_list" /> </LinearLayout> 

Poner todo el código dentro de un padre LL hizo el truco

Usted puede establecer simple en el archivo de diseño xml:

 android:minWidth="0dp" android:minHeight="0dp" 

La imagen no se estirará más

  • Android - reducir EditText flotante etiqueta de relleno / margen?
  • La escala de una vista reduce el tamaño del contenido pero aumenta los márgenes en blanco
  • ¿Es posible agregar un TextView desplazable a un ListView?
  • App: stackFromEnd para RecyclerView no funciona en xml?
  • RelativeLayout toma la pantalla completa para wrap_content
  • Android: es mejor hacer muchas actividades, o una actividad que cambia sobre la marcha?
  • Iniciar otra actividad (por Intent) en la mitad de la pantalla
  • Android: ¿Acabo de tener un disparo por propiedad mediante el uso de temas? ¿No hay nada como CSS en Android?
  • ¿Cómo puedo especificar qué diseño utilizar para un Android Wearable?
  • Barra de acción de Sherlock: findViewById (android.R.id.home) return null en android 2.3
  • Obtener mensaje de error "El recurso no es público"
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.