在JellyBean 4.3版中,可扩展列表视图如何将组图标指示器移动到右侧?

9
以下方法在Android 4.3版本(果冻豆)中无法正常工作。
historyExpaLV.setIndicatorBounds(historyExpaLV.getRight() - 60,
                    historyExpaLV.getWidth() - 8);    

有人知道解决方案吗?提前感谢。


2
“不工作”并不能很好地解释您的症状,这并不是一个非常有用的说明。 - CommonsWare
它在之前的版本中能用吗?你是在测量之前调用它吗?请提供更多细节。 - Geobits
是的,在之前的 Geobits 版本中它是可以工作的。 - pavan kumar
2个回答

31

我是如何修复这个问题的:

更新SDK Manager到Android 4.3并将其用作构建目标。他们在API 18中引入了一种新的方法,称为setIndicatorBoundsRelative(int,int),它与其他方法一样工作(但在Android 4.3中正确工作)。

检查Android版本并使用旧的API方法:

if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) {
   mListView.setIndicatorBounds(myLeft, myRight);
} else {
   mListView.setIndicatorBoundsRelative(myLeft, myRight);
}

2
但是为什么要进行这个更改呢? - Rat-a-tat-a-tat Ratatouille
2
我的左边是什么?我的右边是什么?请详细说明。 - Anand Savjani
myLeft和myRight是您想要填充指示器的期望值。它们被称为“my”,因为由您决定它们应该是什么。请查看文档:http://developer.android.com/reference/android/widget/ExpandableListView.html#setIndicatorBounds(int, int)。 - luben
一个更简洁的解决方案在https://dev59.com/NmEi5IYBdhLWcg3wDoeV - Ramashish Baranwal

5
我认为这是一个错误。
int right = (int) (getResources().getDisplayMetrics().widthPixels - TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 30, getResources().getDisplayMetrics()));
    expandableListView.setIndicatorBounds(right - getResources().getDrawable(R.drawable.group_indicator_padding).getIntrinsicWidth(), right);

这段代码在4.2.2及以下版本中运行良好,但在4.3版本上无法正常工作。


感谢您的友善回答,解决了我的分组指示器图像大小静态问题。 - Satheesh
以上答案适用于您。因为setIndicatorBoundsRelative仅适用于Android >= 4.3。 - AnkitRox

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