Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android listview no longer highlights selection onclick

I have a listview that was showing a yellowtint on items when I touched them. All I've done differently is change the background image in that listview xml , and now it no longer will show me the yellowtint

Here is code

the list view xml, it is just a textview with a background image:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:padding="10dp"
    android:textSize="24sp"
    android:textColor="#000000"
    android:background="@drawable/bglistitem"
    android:gravity="center_vertical|center_horizontal">
</TextView>

the place in another layout where it is called

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:padding="10dp"
    android:textSize="24sp"
    android:textColor="#000000"
    android:background="@drawable/bglistitem"
    android:gravity="center_vertical|center_horizontal">
</TextView>

and here is the code:

lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {}
});

as you can see above, I was never doing anything that would change the default behavior of the selection highlighting, why would this be different now, perhaps something you see that I don't see?

like image 718
CQM Avatar asked Aug 16 '11 22:08

CQM


Video Answer


1 Answers

When you added a new background to the ListView you overrode androids default background that was most likely using a selector to tint the ListItems depending on their state.

Try to use a custom selector

Create an XML file, mycustombackground.xml, and add this to it:

<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_pressed="true"
      android:drawable="@drawable/item_pressed" /> 
   <item android:state_focused="true"
      android:drawable="@drawable/item_focused" /> 
   <item android:drawable="@drawable/item_normal" /> 
 </selector>

Replace the @drawables with your own in relation to the state. Then set the background of your listview to the xml file.

android:background="@drawable/mycustombackground" 

You may want to take a look into the XML to create the yellow color, or just create your own image.

like image 86
MrZander Avatar answered Oct 21 '22 00:10

MrZander