ExpandableListView - 组指示是拉伸以适合文本大小

Tom*_*Mor 15 android expandablelistview

我有小图标的组指示,我使用groupIndicator调用选择器来绘制它,但我看到android默认拉伸该图标以适合文本大小

我该如何防止这种行为,并显示原始大小的图标?

Him*_*ani 25

group_indicator.9.png

无论您使用什么图像作为组指示器,都要将其设置为9补丁(xxx.9.png)图像,并将其可伸展区域设置为边框像素周围(可能是透明的).它将防止图像从中间拉伸.


小智 6

您可以通过setGroupIndicator方法添加组指示符.但默认情况下,Android拉伸指标的高度以适合组项的高度.(宽度可以通过setIndicatorBounds方法调整.)因此,您应该使组指示符的高度与组项目的高度完全相同.(参见ExpandableListView)

否则,您可以使用onGroupCollapsedonGroupExpanded方法创建完全自定义的组指示符.只需使用某些状态创建视图,并在调用这些方法时,更改视图的状态.(参见ExpandableListAdapter)


小智 6

<ExpandableListView 
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:id="@+id/elv_store_info_Expandlist"
    android:cacheColorHint="#FFFFFF"
    android:overScrollMode="never"
    android:fastScrollEnabled="false"
    android:fastScrollAlwaysVisible="false"
    android:indicatorRight="20dp"
    android:divider="@android:color/transparent"
    android:dividerHeight="0dp"
    android:groupIndicator="@drawable/store_info_expandabellist_indicator"
    />
Run Code Online (Sandbox Code Playgroud)

@ store_info_expandabellist_indicator.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item  android:state_empty="true" android:drawable="@drawable/bitmap_btn_arraw_right_dark_small">
</item>
<item android:state_expanded="true" android:drawable="@drawable/bitmap_btn_arraw_bottom_white_small">
</item>
<item android:drawable="@drawable/bitmap_btn_arraw_right_dark_small">
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)

@bitmap_btn_arraw_right_dark_small

 <?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
 <item 
    android:left="11dp"
    android:right="11dp"
    android:top="12dp"
    android:bottom="12dp"
    android:drawable="@drawable/btn_arrowright_dark">
 </item>
 </layer-list>
Run Code Online (Sandbox Code Playgroud)


bwa*_*her 5

我认为在这种情况下最简单的事情是将指示器包含在行组视图中(作为 imageView),并根据组是否展开来更改其选定状态。您需要确保您的 ImageView 使用具有选定状态可绘制对象的选择器。

像这样的东西:

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent)
    {
        View row;

        if (convertView != null)
        {
            row = convertView;
        }
        else
        {
            row = LayoutInflater.from(getContext()).inflate(R.layout.group_row, null));
        }


        final ImageView indicator = (ImageView)row.findViewById(R.id.indicator);
        indicator.setSelected(isExpanded);
        return row;
    }
Run Code Online (Sandbox Code Playgroud)