1

使用基于以下代码的代码,当用户在显示屏上按下它时,State List Selector我设法突出显示了一个子行:ExpandableListView

XML 状态选择器代码:

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

<selector xmlns:android="http://schemas.android.com/apk/res/android" >

  <item 
      android:state_pressed="true"
      android:drawable="@color/highlighted_entry" /> 

  <item 
      android:state_selected="true"
      android:drawable="@color/highlighted_entry" />

  <item android:drawable="@color/transparent" />

</selector>

XML ExpandableListView 布局代码:

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

<LinearLayout

    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:background="@drawable/exp_list_entry_selector" 
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp" >

    <TextView android:id="@+id/exp_list_entry_title"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:gravity="center_vertical"
       android:layout_alignParentTop="true"
       android:layout_alignParentBottom="true"
       android:textStyle="bold"
       android:textSize="12dp"
       android:textColor="#000000" 
    />

</LinearLayout>

Java 代码:

@Override
public boolean onChildClick(    ExpandableListView parent, View v,
                                int groupPosition, int childPosition, long id ) 
{
    v.setSelected(true);    
    return false;
}

如果我尝试突出显示组行(可扩展的条目),同样的方法将不起作用ListView:当用户按下它时它会突出显示(并展开或折叠它的子项),但在释放它之后背景颜色会恢复正常。

无论是否扩展,如何突出显示组行?

4

2 回答 2

3

通过将android:background="@drawable/row_highlighter"属性添加到child.xmlof expandableListView。和创建一个row_highlighter.xml文件。

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

<item android:drawable="@android:color/holo_orange_dark" android:state_activated="true"/>
<item android:drawable="@android:color/transparent"/>

</selector>

和源代码:

int index = parent.getFlatListPosition(ExpandableListView
                   .getPackedPositionForChild(groupPosition, childPosition));
parent.setItemChecked(index, true);

突出显示 ExpandableListView 中的选定项

于 2013-10-16T17:07:02.103 回答
-1

设置适配器时,像这样传递您自己的自定义布局

SimpleCursorTreeAdapter mAdapter = new ListinoProdottiAdapter(null, ListinoProdottiActivity.this,

                                R.layout.my_simple_expandable_list_item_1,
                                R.layout.listino_prodotti_row,
                                ....
                        );

R.layout.my_simple_expandable_list_item_1内部(我将背景设置为红色)

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:gravity="center_vertical"
    android:background="@color/red"
/>
于 2012-08-06T10:50:25.450 回答