Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cambiar selección en un ListView de naranja a verde

¿Cómo hago esto por elemento de lista seleccionado?

He intentado añadir esto a android:background

  • ¿Hay alguna manera de usar Roboguice y ActionbarSherlock en un proyecto?
  • LocationManager devuelve la antigua ubicación en caché "Wifi" con la marca de hora actual
  • Añadiendo un recurso extraíble usando Cordova
  • Android: ¿Por qué getDimension y getDimensionPixelSize devuelven lo mismo?
  • Pantalla completa + barra de acción (Immersive)
  • XML con la biblioteca SimpleXML - Rendimiento en Android
  •  <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:state_pressed="false" android:drawable="@color/android_green" /> <item android:state_focused="true" android:state_pressed="true" android:drawable="@color/black_alpha" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@color/black_alpha" /> <item android:drawable="@color/white_alpha" /> </selector> 

    Pero no funciona, cambia todo el ListView.


    Todavía no funciona, aquí está lo que tengo hasta ahora

    :: listview_background

     <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:drawable="@color/black_alpha" /> <item android:drawable="@color/white_alpha" /> </selector> 

    :: Mi punto de vista que utiliza lo anterior

     <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_below="@+id/round" android:listSelector="@drawable/listview_background"> </ListView> 

    El problema es que la black_alpha aplicará la lista completa, no sólo el elemento de la lista seleccionada

  • Android databinding usando operador lógico "&&"
  • Aplicación de Android basada en una única actividad, múltiples fragmentos
  • Android: ¿Cómo detectar la orientación de la imagen (vertical o horizontal) seleccionada en la galería mientras se ajusta en una vista de imagen?
  • Cómo hacer un doble degradado con XML (iphone like)
  • Android AlertDialog Mueva PositiveButton a la derecha y NegativeButton a la izquierda
  • Java.lang.NullPointerException: Intenta invocar el método virtual 'int android.view.View.getImportantForAccessibility ()' en una referencia de objeto nulo
  • 5 Solutions collect form web for “Cambiar selección en un ListView de naranja a verde”

    Aquí hay un buen artículo sobre cómo usar selectores con listas.

    En lugar de configurarlo para ser el android:background de la ListView, creo que desea establecer android:listSelector como se muestra a continuación:

     <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:divider="@null" android:dividerHeight="0dip" android:listSelector="@drawable/list_selector" /> 

    Jax, dijiste que:

    El problema es que la black_alpha aplicará la lista completa, no sólo el elemento de la lista seleccionada

    Yo tuve el mismo problema. Después de jugar con él durante un tiempo, pude conseguir que dejar de aplicar el color a toda la lista mediante el uso de una imagen png 3×3 del color que quería en lugar de aplicar un color. Así que por alguna razón extraña si utiliza un color que obtiene el comportamiento de fondo extraño, cuando se utiliza un png, funciona bien. S

    Así que es una manera de evitarlo.

    —–De otra manera———-

    Encontré los mejores resultados cuando establecí el selector listView para no tener ningún estado como este:

    Res / drawable / list_selector.xml

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

    Entonces cuido de todos los estados en el fondo del artículo de la lista. NO en el selector. Encontré que tenía más control de esta manera.

    Res / color / list_item_bg.xml

     <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="false" android:state_pressed="false" android:drawable="@color/list_item_black_translucent" /> <item android:state_pressed="true" android:drawable="@color/light_green_accent_translucent" /> </selector> 

    Entonces aquí está mi artículo de la lista:

    Res / layout / simple_list_item.xml

     <?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:orientation="horizontal" android:paddingRight="45dip" android:paddingBottom="2dip" android:layout_gravity="center_vertical" android:background="@color/list_item_bg"> <ImageView android:id="@+id/arrow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="8dip" android:src="@drawable/list_item_arrow" /> <TextView android:id="@+id/simple_list_item_label" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:textSize="12sp" android:textColor="@color/list_label_color"/> </LinearLayout> 

    Yo también estaba frente a su problema donde el cambio de color se aplica a toda la lista.

    Pero ahora su trabajo para mí ahora:

    Mi página principal que contiene el listview (noté que no he aplicado el listselector aquí):

      <ListView android:id="@+id/controlList" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 

    En lugar de aplicar el selector de listas a getView, es como decir que la fila en particular (convertView) para utilizar el listselector.xml en plegable plegable cuando su estado cambia, por ejemplo, presionado, enfocado …:

     @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if(convertView == null){ LayoutInflater li = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); convertView = li.inflate(R.layout.control_list, null); viewHolder = new ViewHolder(); viewHolder.topText = (TextView) convertView.findViewById(R.id.toptext); viewHolder.bottomText = (TextView) convertView.findViewById(R.id.bottomtext); convertView.setTag(viewHolder); } else{ viewHolder = (ViewHolder) convertView.getTag(); } //each convertView will be assigned the listselector convertView.setBackgroundResource(R.drawable.listselector); viewHolder.topText.setText(testSchemes[position]); //viewHolder.vText.setText(testDetails[position]); return convertView; } 

    Y finalmente mi listselector.xml:

     <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="false" android:state_selected="false" android:drawable="@color/lightgreen" /> <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. --> <item android:state_pressed="true" android:drawable="@color/darkgreen" /> <item android:state_selected="true" android:state_pressed="false" android:drawable="@color/orange" /> </selector> 

    Esto es lo que hace el código anterior: Todas las entradas cuando se cargan por primera vez son lightgreen. Desplazarse hacia arriba y hacia abajo con el cursor resalta la entrada seleccionada naranja. Al presionar una fila, se vuelve verde oscuro.

    Como bigstones mencionado en un comentario, una solución de trabajo está usando una forma en vez de un color (yo también estaba consiguiendo la lista entera resaltada). Aquí hay una solución completa:

    Agregue estos 2 atributos al listview:

     android:drawSelectorOnTop="true" android:listSelector="@drawable/my_list_selector" 

    Agregue my_list_selector.xml a la carpeta dibujable:

     <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#77526F35"/> </shape> 

    Ahora los elementos de la lista deben mostrar una superposición verde semitransparente en estado presionado.

    Me enfrenté al mismo problema y, a continuación, sólo necesitaba una línea simple en mi xml punto de vista.

      android:background="?android:attr/activatedBackgroundIndicator" 

    Ver este post: Esta publicación podría ayudar

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.