首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android ExpandableListView 分組項展開/收起狀態下的背景顏色動態切換實現

     編輯:程式設計綜合問答

監聽器設置

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+ 支持)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved