expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
View groupView = expandableListView.getChildAt(groupPosition - expandableListView.getFirstVisiblePosition());
if (groupView != null) {
groupView.setBackgroundColor(Color.GREEN); // 展開綠色
}
}
});
expandableListView.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int groupPosition) {
View groupView = expandableListView.getChildAt(groupPosition - expandableListView.getFirstVisiblePosition());
if (groupView != null) {
groupView.setBackgroundColor(Color.WHITE); // 收起白色
}
}
});
在 getGroupView 中根據狀態設置背景,避免滑動重用導致顏色錯亂:
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
View view = convertView != null ? convertView : inflater.inflate(R.layout.group_item, parent, false);
view.setBackgroundColor(isExpanded ? Color.GREEN : Color.WHITE);
// 綁定文本等
return view;
}
isExpanded 參數實時反映當前狀態,優於外部監聽器修改。Selector,需定義 state_expanded 屬性(API 21+ 支持)。