Android可扩展列表视图指示器/图标总是拉伸

8
我在ExpandableListView中使用自己的图标图像作为指示器,但是图标似乎被拉伸了,我尝试将图像文件放置在/drawable和/drawable-hdpi中,但没有成功。如果我不使用自己的图标,则内置的Android图标看起来很好,所以我想知道是否存在图像尺寸限制,或者我是否做错了什么?
谢谢!
3个回答

18

group_indicator.9.png

无论您将什么图像用作组指示器,都应将其制作成9 patch(xxx.9.png)图像,并将其可拉伸区域设置为边框像素周围的区域(这可能是透明的)。这样可以防止图像从中间被拉伸。


它不起作用......如果我们设置9个图像,就没有变化.....我应用的一个解决方案是将箭头图像的高度与其显示的背景相同..... - Jayesh
@PavanKumar 这取决于你需要什么尺寸。 :) - andrea.rinaldi
对我来说运行得很好。此外,我找到了一个链接,可能有助于澄清事情:https://www.hrupin.com/2012/08/how-to-create-custom-groupindicator-for-expandablelistview-group - Tobias Reich

7
如果您想通过编码完成这一切,而不使用不同的图像,则可以按照以下步骤进行操作:
(1) 将组指示器设置为null。
(2) 在组布局中包含自定义组指示器。
(3) 拥有一个groupClickListener,该groupClickListener会改变指示器的状态。
代码片段:
(1) mListView.setGroupIndicator(null); (2) 在组布局中包含我的指示器。
   <ImageView
    android:id="@+id/help_group_indicator"
    android:layout_width="@dimen/help_group_indicator_dimension"
    android:layout_height="@dimen/help_group_indicator_dimension"
    android:layout_marginTop="@dimen/help_group_indicator_dimension"
    android:src="@drawable/down_icon" />

(3)

mListView.setOnGroupClickListener(new OnGroupClickListener() {
    @Override
    public boolean onGroupClick(ExpandableListView parent, View clickedView, int groupPosition, long rowId) {
        ImageView groupIndicator = (ImageView) clickedView.findViewById(R.id.help_group_indicator);
        if (parent.isGroupExpanded(groupPosition)) {
            parent.collapseGroup(groupPosition);
            groupIndicator.setImageResource(R.drawable.down_icon);
        } else {
            parent.expandGroup(groupPosition);
            groupIndicator.setImageResource(R.drawable.up_icon);
         }
        return true;
    }
});

7
可扩展列表很麻烦,它总是拉伸图标。一个简单的解决方案是使用九宫格图片,其中只包含顶部和底部的可拉伸像素。因此,只有这两个像素被拉伸,您的图像的其余部分保持不变。
希望这样说得通。

“只有顶部和底部都可以拉伸的像素”,这是否意味着左/右侧没有可拉伸的像素? - Heuristic
另外,我的图标是一个实心圆形,里面有一个三角形,似乎很难将其制作成九宫格。 - Heuristic
当我不使用自己的图标时,安卓内置的图标不会被拉伸,所以我猜应该有办法解决这个问题。 - Heuristic
在Android资源文件夹中搜索expander_ic_maximized.9,以查看示例。这是Android默认用于可扩展列表的图标,并且具有我提到的像素。 - omega
谢谢,看起来expander_ic_maximized.9是一个九宫格图片,但在我的情况下,无法将其制作成九宫格,即使它是九宫格,它看起来比我拉伸的图标要小。 - Heuristic
由于“它总是会扩展”,因此我接受了你的答案,谢谢! - Heuristic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接