2012-08-06 68 views
1

利用基於State List Selector下面的代碼的組行我成功當用戶按下它在顯示屏上要突出一個ExpandableListView的一個子行:如何突出一個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的條目是可擴展)同樣的方法將不起作用:當用戶按下它,它會得到突出顯示(和展開或摺疊它的孩子),但釋放它後,背景顏色將恢復正常。

無論擴展與否,我如何突出顯示組行?

+0

[Rü刻意突出的點擊expandlist,我的意思是做u需要用戶KNW該名單已經被點擊 – Rakshi 2012-08-06 10:49:13

+0

@Rakshi - 是的,我需要突出顯示列表的條目,而不管它是子行還是父行,因爲用戶可能需要對其執行一些操作。有任何想法嗎? – Matteo 2012-08-06 10:52:43

+0

你嘗試添加一個像向下箭頭的圖像,以便用戶可以知道它是一個擴展列表。 – Rakshi 2012-08-06 11:03:26

回答

-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" 
/> 
+0

有沒有使用「狀態列表選擇器」的解決方案? – Matteo 2012-08-06 10:54:45

+0

對不起,你對State List Selector有什麼意義? – max4ever 2012-08-06 10:55:40

+0

[請點擊這裏](http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList) – Matteo 2012-08-06 10:57:36

3

通過添加android:background="@drawable/row_highlighter"屬性到expandableListViewchild.xml。和創建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); 

Highlighting the selected item in the ExpandableListView

+0

爲你的答案,我會檢查出來並回復給你,儘管它是一個非常過時的問題; D – Matteo 2013-10-16 20:09:01