2

プログラムで ExpandableListView を作成し、グループ項目に TextView を使用しています。ExpandableListView が xml 内で宣言されている場合、おそらく発生しない groupIndicator で問題が発生しました。インジケーターは、groupItem の上部に直接描画されます (「パディングトップなし」)。TextViews でパディングを使用しているため、インジケーターが TextView の高さに揃えられていないように見えます。インジケータを正しく配置するにはどうすればよいですか?

どうも

編集: 私のカスタム 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 のスクリーンショットです。 ここに画像の説明を入力

ご覧のとおり、インジケータ ドローアブルは groupItem の上端に接触しています。

EDIT2:私の問題を解決することを期待して、カスタム Drawable をインジケーターとして設定しました。最初に、私のドローアブルは groupItem の高さに合わせて引き伸ばされました。現在、インジケーターが伸びないようにする 9 パッチを使用していますが、これにより、インジケーターが (以前のように上部ではなく) 下部に配置されます。まあ、それでも同じ問題が逆転しました。カスタムドローアブルを使用して問題を解決する方法はありますか? インジケーターにパディングを追加する方法があるかもしれません (ドローアブルの高さと 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());
4

1 に答える 1

0

この質問と coderat の回答によると、私は 9patches を使用して問題を解決する方法を見つけました [ ExpandableListView - グループ表示はテキストサイズに合わせて引き伸ばされます]:

ここに画像の説明を入力

于 2013-10-11T16:23:27.400 に答える