Selector xml de Android para diseños

Yo estaba deseando saber si hay un selector para las disposiciones, como no hay para drawables.

Ejemplo de selector con extraíble:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- When selected --> <item android:drawable="@drawable/tab_library_clicked" android:state_selected="true" /> <!-- When not selected --> <item android:drawable="@drawable/tab_library_not_clicked" /> 

Pero es posible tener algo como esto (Este código a continuación no funcionó para mí, pero debería dar una idea de lo que estoy tratando de lograr):

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- When selected --> <item android:layout="@layout/tab_library_clicked" android:state_selected="true" /> <!-- When not selected --> <item android:layout="@layout/tab_library_not_clicked" /> 

4 Solutions collect form web for “Selector xml de Android para diseños”

Puedo estar equivocado, pero estoy bastante seguro de que esto no existe.

El más "sofisticado" que usted podrá hacer con un selector en XML probablemente está usando una lista de capas de drawable para combinar varios drawables en un estado.

Como alternativa, puede intentar usar los eventos touch_down y touch_up para llamar programáticamente a setVisibility() en los layouts, pero me imagino que el rendimiento será muy bajo.

Ok, lo que está buscando es una forma de propagar el estado de los padres a sus vistas secundarias. De esta forma, siempre que cambie el estado del indicador (seleccionado, no) el estado de la vista de la imagen cambia.

Android ya tiene un atributo xml para eso.

 android:duplicateParentState="true" 

Utilice esta opción con las vistas de su hijo en el archivo de diseño y compártalas con el selector. por ejemplo:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#f00" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" android:duplicateParentState="true" /> <ImageView android:id="@+id/imageView1" android:duplicateParentState="true" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center_horizontal" android:src="@drawable/selector" /> 

El mecanismo selector por defecto sólo proporciona alternativas para propiedades (como dibujable para usar, etc.), dependiendo del estado de una vista. No reemplaza las Vistas mismas. La funcionalidad que solicita no está disponible.

El estado seleccionado para una vista está enlazado a uno de los valores de los campos *_STATE_SET de la clase View . Estado combinado de una vista se recupera mediante getDrawableState() .

Puede extender una clase View y hacer uso de estos estados para hacer algo personalizado. O bien, puede desarrollar un controlador de diseño personalizado, que observe los cambios de estado en el árbol de vistas y reemplace las vistas secundarias de acuerdo con un recurso xml.

Pero el esfuerzo no vale la pena porque:

  1. La estructura de vista / disposición debe permanecer igual durante la interacción del usuario con ella. No debe cambiar un botón en una casilla de verificación cuando el usuario lo selecciona, la sustitución de vistas / diseños como eso es simplemente confusa en UX.

  2. Sólo es necesario modificar la apariencia de una vista en la interacción del usuario, que ya se proporciona mediante dibujos basados ​​en selectores y colores.

No hay tal atributo android:layout para el item en la documentación . Se supone que debe usarse con android:drawable .

  • Efectos de transición de la actividad: deslice hacia la actividad superior y la escala para la actividad de la parte inferior
  • Atributos personalizados del tipo de matriz
  • Uso de atributos desde el nivel API más allá de minSdkVersion
  • Cómo obtener el ancho en píxeles de vista con android: layout_width = "wrap_content"?
  • La ventana emergente AutoCompleteTextView de Android se mueve tras mostrar
  • Cómo eliminar los espacios en blanco entre etiquetas en XML
  • Listview no muestra nada y ocultar datos
  • ¿Puede un ToggleButton cambiar la funcionalidad de otros botones en la misma Actividad?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.