6

リストの右側にグループ インジケーターを表示する拡張可能なリストビューを使用しています。この場合、タイトル名は 1 行で、このような出力になります

ここに画像の説明を入力

上の画像では、私のインジケーターは良さそうです。下の画像では、私のインジケーターは良くないように見えますが、なぜこれが起こるのですか

ここに画像の説明を入力

ここに私のコードがあります

    mExpandableList = (ExpandableListView)findViewById(R.id.expandable_list);
    mExpandableList.setIndicatorBounds(width - GetPixelFromDips(40), width - GetPixelFromDips(10)); 

xmlは

     <ExpandableListView
    android:id="@+id/expandable_list"        
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:groupIndicator="@drawable/group_indicator" />

group_indicator.xml は

<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_up"/>
</selector>

誰もがこれを助けるアイデアを持っています........

4

4 に答える 4

2

私はこの問題をより複雑な方法で解決しますが、うまくいきます:

展開可能なリストを含むレイアウト ファイルのフラグメント:

<ExpandableListView
  android:id="@+id/accordion"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:groupIndicator="@android:color/transparent"
  android:scrollbars="none" >
</ExpandableListView>

リスト グループ要素のレイアウト

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/accordion_main_background"
    android:minHeight="50dip"
    android:orientation="vertical"
    android:padding="@dimen/screenPromoTaskRootPadding" >

    <TextView
        android:id="@+id/accordionTitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginRight="10dip"
        android:layout_toLeftOf="@+id/accordionIndicator"
        android:background="@color/accordionOrangeBackColor"
        android:paddingLeft="2dip"
        android:paddingRight="2dip"
        android:textColor="@color/blackTextColor"
        android:textSize="@dimen/accordMainTextSize" />

    <ImageView
        android:id="@+id/accordionIndicator"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/arrow_up_np" />

</RelativeLayout>

そして活動中。adaptDataCollection は、ExpandableListAdapter のデータを含む単なるリストでした。また、これはアコーディオンの実装の一部であるため、リスト グループは選択された要素の後に他の要素を折りたたみます。

ExpandableListView accordion = (ExpandableListView) findViewById(R.id.accordion);
accordion.setOnGroupClickListener(this);

@Override
public boolean onGroupClick(ExpandableListView paramExpandableListView, View paramView, int paramInt, long paramLong) {
    ImageView icon=(ImageView)paramView.findViewById(R.id.accordionIndicator);
    for (int i = 0; i < adapterDataCollection.size(); i++) {
        if (i == paramInt) {
            if (paramExpandableListView.isGroupExpanded(i)) {
                paramExpandableListView.collapseGroup(i);
                icon.setImageResource(R.drawable.arrow_up_np);
            } else {
                paramExpandableListView.expandGroup(i);
                icon.setImageResource(R.drawable.arrow_down_np);
            }
        } else {
            paramExpandableListView.collapseGroup(i);
            icon.setImageResource(R.drawable.arrow_up_np);
        }
    }
    paramExpandableListView.invalidate();
    return true;
}
于 2013-04-24T13:10:53.900 に答える
0

adapterClassでインフレートするときに、custom_group_layout.xml で使用しているビューを見てください getGroupView()。インジケーターのビューには fill_parent がある可能性があります。そのため、グループにさらに多くのテキスト行が含まれていると、アイテムがアイコンを伸ばしています。

于 2013-04-24T13:04:18.553 に答える