我正在研究一个涉及和扩展的应用程序。我们希望用自己的选择替换组指标。

我为指标创建了一个规格,该规范会根据选择器的状态(扩展或不扩展)显示不同的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的图标,并希望获得最好的。我正在尝试找出本机图标的尺寸,以便可以匹配它,但这就是我遇到麻烦的地方。

浏览源代码(explablelistview.java),我发现,默认情况下,该类将使用com.android.internal.r.stylable.stylable.stylable.stypandablelistview_groupindicator。所以我有一个ID,但还没有图标。

我很想能够做:

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

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

我还在explableListView.java中找到了getIndicate(),但是它是私人的,所以我也无法做到这一点。

我很陌生地研究平台源代码,我不知道该如何跟踪该图像。谁能帮我吗?

编辑:谢谢Commonsware。为其他人看剩下的东西:

Android:drawable/extander_group在/frameworks/base/core/res/res/res/drawable/expander/expander_group.xml中定义。
expander_group.xml提到它使用 @drawable/expander_ic_maximized和 @drawable/expander_ic_minimized。可以在/frameworks/base/core/res/res/res/expander_ic_maximized.9.9.png和/frameworks/base/base/core/core/core/res/res/res/res/res/expander/expander/expander/expander_minimized.9.png中找到那些可绘制的物品。这样。 “ 9”解释了为什么默认图标没有失真问题 - 它们是Patch -9图形。图标的密度不平衡版本为34px x 38px。

有帮助吗?

解决方案

base.git' core/res/res/values/styles.xml 定义 com.android.internal.R.styleable.ExpandableListView_groupIndicator 作为 android:drawable/expander_group. 。这是一个 StateListDrawable 在您的SDK的资源副本中。基于密度,基础的PNG具有不同大小的不同尺寸。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top