【问题标题】:How to determine appropriate dimensions for ExpandableListView groupIndicator icons?如何确定 ExpandableListView groupIndicator 图标的适当尺寸?
【发布时间】:2011-06-08 21:08:12
【问题描述】:

我正在开发一个涉及 ExpandableListView 的应用程序。我们想用我们自己选择的一个替换 groupIndicator。

我为指示器创建了一个规范,该规范将根据选择器的状态(展开或未展开)显示不同的 png

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/arrow_down" android:state_expanded="true"/>
    <item android:drawable="@drawable/arrow_right"/>    
</selector>

然后我设置要使用的布局 xml:

(请注意,childDivider 是一个像素高的 png 而不是颜色,因为将其设置为颜色似乎有问题)

这可行,只是我们的图标是垂直拉伸的。这是有道理的,因为我们刚刚创建了一个 25x25 的图标并希望做到最好。我正在尝试找出本机图标的尺寸以便我可以匹配它,但这就是我遇到麻烦的地方。

挖掘源代码(ExpandableListView.java)我发现,默认情况下,该类将使用 com.android.internal.R.styleable.ExpandableListView_groupIndicator。所以我有一个 id,但还没有图标。

我希望能够做到:

Bitmap image = BitmapFactory.decodeResource(this.getResources(), com.android.internal.R.styleable.ExpandableListView_groupIndicator);
        imWidth = image.getWidth();
        imHeight = image.getHeight();

但正如“内部”所暗示的那样,我在用户空间中看不到它。

我还在 ExpandableListView.java 中找到了 getIndicate(),但它是私有的,所以我也无法访问。

我对深入研究平台源代码还很陌生,而且我不知道如何追踪该图像。谁能帮我吗?

编辑:感谢 CommonsWare。为其他人拼出其余的内容:

android:drawable/expander_group 在 /frameworks/base/core/res/res/drawable/expander_group.xml 中定义。
expander_group.xml 提到它使用@drawable/expander_ic_maximized 和@drawable/expander_ic_minimized。 这些绘图可以在 /frameworks/base/core/res/res/drawable/expander_ic_maximized.9.png 和 /frameworks/base/core/res/res/drawable/expander_ic_minimized.9.png 以及其他特定密度的地方找到等等。 “9”解释了为什么默认图标没有失真问题 - 它们是补丁 9 图形。与密度无关的图标版本为 34 像素 x 38 像素。

【问题讨论】:

    标签: android expand expandablelistview collapse


    【解决方案1】:

    base.gitcore/res/res/values/styles.xmlcom.android.internal.R.styleable.ExpandableListView_groupIndicator 定义为android:drawable/expander_group。那是您的 SDK 资源副本中的 StateListDrawable。底层 PNG 的大小会根据密度而有所不同。

    【讨论】:

    • 嗨,马克。喜欢你的高级 Android 书,谢谢你写它。也感谢您的回答,在您的帮助下,我能够找到资源文件夹和正确的文件。
    • @MaximumGoat:很高兴答案和书有用!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    相关资源
    最近更新 更多