最近想做依照QQ做些那樣的效果,所以就用到了ExpandableListView,在網上搜集了一些,在加上自己的總結,如下:
1.自定義 ExpandableListView 的group的樣式
目的:把小箭頭放在右邊
先把 groupIndicator 屬性禁掉,android:groupIndicator="@null",然后把自定義的布局加入
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view = li.inflate(R.layout.expandable_group, null);
ImageView mgroupimage=(ImageView)view.findViewById(R.id.groupimage);
if(!isExpanded){
mgroupimage.setBackgroundResource(R.drawable.btn01);
}else{
mgroupimage.setBackgroundResource(R.drawable.btn02);
}
TextView tv = (TextView) view.findViewById(R.id.groupname);
tv.setText(groups[groupPosition]);
return view;
}
2.只展開一個group,點第一個gorup后,再點第二個group時,第一個會自動收縮
expandablelistview.setOnGroupExpandListener(new OnGroupExpandListener(){
@Override
public void onGroupExpand(int groupPosition) {
// TODO Auto-generated method stub
for(int i=0;i<groups.length;i++){
if(groupPosition != i){
elv.collapseGroup(i);
}
}
}});
3.點擊時會出現全部變為黑色的情況
expandablelistview.setCacheColorHint(0);
使用前:
4.如果group沒有child時,就不讓它展開
expandablelistview.setOnGroupClickListener(new OnGroupClickListener(){
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
// TODO Auto-generated method stub
if(childs.get(groupPosition).isEmpty()){
return true;
}
return false;
}});
5.
android:groupIndicator | 定義group行的指示圖標的樣式,展開和收縮時圖標的變換 |
android:childIndicator | 定義child行的指示圖標的樣式 |
android:drawSelectorOnTop | 為true時,點擊時,出現的顏色會把文字覆蓋住,為false時,不會 |
android:transcriptMode | 需要用ListView或者其它顯示大量Items的控件實時跟蹤或者查看信息,並且希望最新的條目可以自動滾動到可視范圍內。
通過設置的控件transcriptMode屬性可以將Android平台的控件(支持ScrollBar)自動滑動到最底部 |
android:fadingEdge | 設置上邊和下邊的陰影 |
android:fadeScrollbars |
滾動條的自動隱藏和顯示。 |
原創作品,轉載請注明出處:轉載自道痕