Android:如何更改 ExpandableListView Indicator 的位置?

标签 android listview

我想更改显示在 ExpandableListView 的组 View 中的默认箭头的位置。我希望它在右边而不是在左边。

如何做到这一点?

最佳答案

其实有一个简单的方法。

  1. 像这样编辑与组 View 相关的 XML:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="35dp"
    android:orientation="horizontal" >
    
    <TextView
        android:id="@+id/videos_explist_groupname"
        android:layout_width="match_parent"
        android:layout_height="?android:attr/listPreferredItemHeight"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/videos_group_indicator"
        android:gravity="center"
        android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
        android:textAppearance="?android:attr/textAppearanceListItem" />
    
    <ImageView
        android:id="@+id/videos_group_indicator"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/videos_chevron_collapsed" />
    
    </RelativeLayout>
    

    看看 ImageView 如何在 TextView 的右边。

  2. 按如下方式编辑您的 ExpandableListAdapter:

    @Override
    public View getGroupView(final int groupPosition, final boolean isExpanded, final View convertView, final ViewGroup parent) {
        View v;
        if (convertView == null) {
            v = newGroupView(isExpanded, parent);
        } else {
            v = convertView;
        }
        bindView(v, mGroupData.get(groupPosition), mGroupFrom, mGroupTo);
        ((ImageView) v.findViewById(R.id.videos_group_indicator))
            .setImageResource(isExpanded?R.drawable.videos_chevron_expanded:R.drawable.videos_chevron_collapsed);
        return v;
    }
    

    如您所见,您可以轻松地设置与组状态对应的 drawable。

我知道很久以前就有人问过这个问题,但这可能会对某些人有所帮助。

关于Android:如何更改 ExpandableListView Indicator 的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5132699/

相关文章:

android - ActivityRecord 的 Activity 空闲超时

java - 单击按钮用力关闭 Activity

android - HostnameVerifier 正确实现

c# - ListView 项目不移动

android - 如何从 ListView 中删除 Firebase Android 中的特定节点

android - listview根据选择android打开警报对话框

Android - ActionBarSherlock - 设置子菜单中文本的文本颜色

java - 处理最终字段为空的 csv 字符串时,myString.split( ",") 返回不正确的数组条目数

java - 如何从另一个类更改 imageview 源?

java - 使用 notifyDataSetChanged() 时,Android API ListView 不会更新;