設定ExpandableListView右邊的箭頭

yangxi_001發表於2014-10-08

更換ExpandableListView右邊的箭頭(小圖示)的疑問

      第一個方法: 網上許多說到在ExpandableListView的佈局xml中的groupIndicator更換成@drawable/***,我試過,可行,程式碼如下:

首先在drawable的資料夾下建立自定義選擇佈局屬性的xml檔案:ex_smallimage.xml

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_expanded="false"
          android:drawingCacheQuality="auto"
        android:drawable="@drawable/la"/>     這裡la是下拉圖示
    <item android:state_expanded="true"
        android:drawingCacheQuality="auto"
     android:drawable="@drawable/shou"/> 這裡shou是收回圖示
</selector>

然後在ExpandableListView的groupIndicator設為:android:groupIndicator="@drawable/ex_smallimage"

這樣做了可行,但是有個問題,就是圖示總是隨group的大小而拉伸,不會縮放:

那麼我調了xml的group程式碼之後,可以勉強達到自己要求的效果,但是這樣的程式碼沒有彈性,換張圖片還得改佈局。。。如果有知道如何設定圖示的大小告訴我咯~呵呵。。

方法二:經過上面的嘗試,我禁掉了groupIndicator屬性,然後再在group的xml中加入ImageView,這樣可以控制我的圖片的縮放和位置的更改,程式碼:

android:groupIndicator="@null"這裡非常重要,禁用系統自帶的圖示

再在group的xml中設定ImageView,這個簡單,然後在介面卡的getGroupView中加入圖片變換的效果:

public View getGroupView(int groupPosition, boolean isExpanded,
   View convertView, ViewGroup parent) {

     // TODO Auto-generated method stub

…… 

           ImageView mgroupimage=(ImageView)convertView.findViewById(R.id.mGroupimage);
           mgroupimage.setImageBitmap(mla);
           if(!isExpanded){
                  mgroupimage.setImageBitmap(mshou);
            }

……

}

相關文章