我以编程方式创建了一个ExpandableListView,我正在使用TextView作为groupitems。我现在遇到了groupIndicator的问题,当在xml中声明ExpandableListView时,它可能不会发生:指示符直接绘制到groupItem的顶部(“no paddingTop”)。我在TextViews上使用填充,因此看起来指示符未与TextView高度对齐。如何正确对齐指示器?
THX
编辑: 在我的自定义BaseExpandableListAdapter中:
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
Context c = context.get();
if(c==null)
return null;
if(convertView==null){
convertView = new TextView(c);
TextView t = (TextView) convertView;
t.setText(groupData.get(groupPosition));
t.setPadding(left, groupPadding, left, groupPadding); // left '=' android.R.attr.expandableListPreferredItemPaddingLeft
t.setTextSize(TypedValue.COMPLEX_UNIT_PX, groupTextSize);
t.setTextColor(Color.WHITE);
return t;
}
TextView t = (TextView) convertView;
t.setText(groupData.get(groupPosition));
return t;
}
这是一个未展开的groupItem的屏幕截图:
正如您所看到的,drawable指标触及groupItem的上边缘。
EDIT2: 我将自定义Drawable设置为指示器,希望它能解决我的问题。起初我的drawable被拉伸以适合groupItem的高度。我现在正在使用9patchs来防止指示器被拉伸,但这会导致指示器与底部对齐(而不是像以前一样对齐)。好吧,仍然是同样的问题刚刚逆转。任何想法如何使用我的自定义drawable解决问题?也许有一种方法可以为指标添加填充(因为我知道可绘制的高度和groupItem的高度)?
//indicator_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_expanded="true" android:drawable="@drawable/arrow_right" />
<item android:drawable="@drawable/arrow_down" />
</selector>
//in MainActivity.onCreate()
expView = new ExpandableListView(context);
indicator = context.getResources().getDrawable(R.drawable.indicator_selector);
expView.setGroupIndicator(indicator);
expView.setIndicatorBounds(expView.getPaddingLeft(), expView.getPaddingLeft()+indicator.getIntrinsicWidth());
答案 0 :(得分:0)
根据这个问题和coderat的答案,我想出了如何使用9patches [ExpandableListView - group indication is stretch to fit the text size]来解决我的问题: