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.xmlによってexpandableListViewrow_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 に答える