Won*_*ane 1 android cornerradius expandablelistadapter
我正在尝试使用ExpandableListAdapter.getChildView调试我遇到的问题.
我已经定义了一个Drawable,其中包含一个包含渐变的形状和一个半径为1的角,用于列表项的背景 - 没有什么特别之处.
然后,在我的适配器代码中,我在getChildView中有这个片段:
GradientDrawable background = (GradientDrawable) convertView.getBackground();
float topRadius = 0;
float bottomRadius = 0;
// Make the corner radius obvious for debugging
if (childPosition == 0)
topRadius = 14;
if (childPosition == (mValues.size() - 1))
bottomRadius = 14;
background.setCornerRadii(new float [] { topRadius, topRadius,
topRadius, topRadius,
bottomRadius, bottomRadius,
bottomRadius, bottomRadius});
convertView.setBackgroundDrawable(background);
Run Code Online (Sandbox Code Playgroud)
这里的尝试是围绕第一个列表项的顶部和最后一个列表项的底部.通过调试,似乎我正在为我想要的项目设置我想要的值.
但是,我遇到的问题是正在为所有列表项设置角半径,就像它是底部项一样.
稍微说一下,有没有办法获得GradientDrawable的角半径,至少是为了调试目的?
谢谢,
wTs
Rom*_*Guy 16
而不是调用setCornerRadii(),调用mutate().setCornerRadii(),这应该解决你的问题(完整的解释可在http://www.curious-creature.org/2009/05/02/drawable-mutations/获得)
编辑(由Wonko)
这几乎是正确的(提供的链接基本上解释了原因).唯一的变化是mutate()返回一个Drawable,它没有setCornerRadii()方法.相反,您需要将变异对象强制转换为GradientDrawable,它就像魅力一样.
((GradientDrawable) background.mutate()).setCornerRadii(
new float [] { topRadius, topRadius, topRadius, topRadius,
bottomRadius, bottomRadius, bottomRadius, bottomRadius});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3841 次 |
| 最近记录: |