Выделить элемент TextView в списке

#android #android-layout

#Android #android-макет

Вопрос:

У меня есть ListView:

 <?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:background="@drawable/background"
    android:orientation="vertical">

    <ImageView 
        android:layout_height="wrap_content"
        android:id="@ id/imageView1"
        android:src="@drawable/tab"
        android:layout_gravity="center_horizontal"
        android:layout_width="fill_parent"></ImageView>

    <TextView
        android:id="@ id/subcat"
        android:background="#b9cd4a"
        android:layout_width="fill_parent"
        android:textColor="#fff"
        android:textStyle="bold"
        android:layout_height="35dp"
        android:textSize="18dp"
        android:paddingLeft="10dp"
        android:paddingTop="6dp"
        android:text="Choose Location"></TextView>

    <ListView
        android:id="@ id/sub_catlist"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:listSelector="@color/black"></ListView>

</LinearLayout>
  

И я увеличиваю список, используя макет TextView:

 <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:background="#fff"
    android:orientation="vertical"
    android:layout_height="65dp" >

    <TextView
        android:text="@ id/albumDetails"
        android:id="@ id/albumDetails"
        android:textColor="#000"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="5dp"
        android:textSize="16dp"
        android:layout_width="wrap_content"
        android:paddingTop="8dp"
        android:layout_height="45dp"></TextView>

</LinearLayout>
  

Проблема в том, что когда я нажимаю элемент списка, я не вижу никакого выделения. Мне нужно показать выделение, когда пользователь нажимает на элемент. Как я могу это сделать?

Ответ №1:

TextView является ли перехват событий щелчка из ListView . Установить атрибуты

 android:focusable="false"
android:clickable="false" 
  

к списку TextView .

Ответ №2:

В пользовательском Listview используется приведенный ниже код.

  TextViewClick.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {

                    int count = listview.getChildCount();
                    for (int i = 0; i < count; i  ) {
                        View v = listview.getChildAt(i);
                        TextView tx = (TextView) v.findViewById(R.id.txt1);
                        txt1.setBackgroundColor(Color.RED);
                    }
                    txt1.setBackgroundColor(Color.GREEN);
            }
 });
  

Ответ №3:

Я думаю, что проблема может быть в android:listSelector="@color/black" , удалите эту строку

Пример ListView

 <ListView
    android:id="@ id/nativecontacts_contacts_ListView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:drawSelectorOnTop="false"
    android:background="@color/White"
    android:divider="@drawable/menu_line"
    android:cacheColorHint="#00000000"
    android:clickable="true" />