Intereting Posts
Как мы можем отключить автоматическую яркость в Android? Android: onBackPressed () не вызывается при открытии ящика навигации Загружайте файлы и храните их локально с помощью Phonegap / jQuery Mobile Android и приложений для iOS Сделайте эффективные вложения SQLite с Android Неверное количество счетчиков, количество которых не определено Размер панели уведомлений android и заголовка? Получение полного и доступного пространства на Android Перетаскивание RecyclerView с помощью itemTouchHelper странно при перетаскивании Динамические пути в дооснащении Можно ли отделить потоки пользовательского интерфейса WebView и HTTP? Webroll scrollTo не работает Почему я получаю сбой при выходе из своей деятельности? Почему «Кнопки в панелях кнопок должны быть без полей» в Android API Level 15? Android Studio: не удалось выполнить выполнение градиента, причина пуста Android Volley – как оживить загрузку изображения?

Изменить цвет выбранного элемента списка

Я хочу изменить цвет элемента списка, когда он нажмет

Для этого мне понравилось ниже,

list_item_selector.xml

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> Selected <item android:state_focused="true" android:state_selected="false" android:drawable="@drawable/list_focused"/> Pressed <item android:state_selected="true" android:state_focused="false" android:drawable="@drawable/list_selected" /> </selector> 

Я установил цвет в colors.xml, как показано ниже,

  <drawable name="list_focused">#36C170</drawable> <drawable name="list_selected">#9EC136</drawable> 

И в моем ListView я так писал,

 <ListView android:id="@+id/list_centers_complete" android:layout_width="fill_parent" android:layout_height="wrap_content" android:cacheColorHint="@android:color/transparent" android:listSelector="@drawable/list_item_selector" /> 

Но когда я нажимаю на элемент списка, весь цвет фона изменяется вместо элемента списка.

Как я могу это решить? Там в любом случае?

спасибо

Solutions Collecting From Web of "Изменить цвет выбранного элемента списка"

Примените "@drawable/list_item_selector" к строке этого списка (элемент списка), а не самому списку.

Что-то вроде, ваш элемент списка (строка списка).

 <?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="fill_parent" android:orientation="horizontal" android:background="@drawable/list_item_selector"> <TextView android:id="@+id/textForList" android:layout_height="fill_parent" android:layout_width="wrap_content" android:padding="10sp" /> . . . </LinearLayout> 

list_item_selector.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true"> <shape> <solid android:color="#66FFFFFF" /> </shape> </item> <item> <shape> <solid android:color="#FF666666" /> </shape> </item> </selector> 

Вы должны установить селектор в строку, а не в список.

 <item android:state_activated="true"> <shape android:shape="rectangle"> <solid android:color="#333333" /> <padding android:left="5dp" android:right="5dp" /> </shape></item> <item><shape android:shape="rectangle"> <solid android:color="#222222" /> </shape></item> 

Попробуйте с помощью специального адаптера, это также поможет вам полностью контролировать ваши элементы и установить выбранный по умолчанию элемент; ListView XML и элемент XML не имеют специальной настройки.

 public class ListAdapter extends ArrayAdapter<MyObj> { private final int layoutInflater; private Context context; private List<MyObj> items; private int mSelectedItem = 0; private int TAG_UNSELECTED = 0; private int TAG_SELECTED = 1; public ListAdapter(Context context, int resource, List<MyObj> items) { super(context, resource, items); this.context = context; this.layoutInflater = resource; this.items = items; } public void selectItem(int position) { mSelectedItem = position; notifyDataSetChanged(); } @Override public int getViewTypeCount() { return 2; } @Override public int getItemViewType(int position) { return position == mSelectedItem ? TAG_SELECTED : TAG_UNSELECTED; } @Override public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; if (v == null) { LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(layoutInflater, null); } MyObj myObj = items.get(position); TextView textView = (TextView) v.findViewById(R.id.title); textView.setText(myObj.title); int type = getItemViewType(position); if(type == TAG_SELECTED) { v.setBackgroundColor(Color.parseColor("#1da7ff")); textView.setTextColor(Color.parseColor("#ffffff")); } else { v.setBackgroundColor(Color.parseColor("#f8f8f8")); textView.setTextColor(Color.parseColor("#474747")); } return v; } } 

Затем в вашей деятельности:

  ListView listView = (ListView) findViewById(R.id.list_view); ListAdapter adapter = new ListAdapter(mContext, R.layout.item_layout, list); listView.setAdapter(adapter); adapter.selectItem(0); // Default selected item // Get selected item and update its background listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { adapter.selectItem(position); } }); 

использовать это

 android:background="@drawable/list_item_selector""