1

リストビューの高さを上げるために、拡張可能な ListView を次のように使用しています。

public class ExpandableListView extends ListView {

    private android.view.ViewGroup.LayoutParams params;
    private int old_count = 0;

    public ExpandableListView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        if (getCount() != old_count) {
            old_count = getCount();
            params = getLayoutParams();
            params.height = getCount() * (old_count > 0 ? getChildAt(0).getHeight() : 0);
            System.out.println("params h "+params.height+" "+params);
            setLayoutParams(params);
        }

        super.onDraw(canvas);
    }

}

layout.xmlとして、

<com.jems.realtimedata.ExpandableListView
                android:id="@+id/listView1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"      
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginTop="25dp"
                android:background="@color/list_back"
                android:cacheColorHint="#00000000"
                android:divider="@drawable/line"
                android:paddingLeft="7dp"
                android:paddingRight="7dp"
                android:paddingTop="10dp"
                android:scrollbars="none" />

しかし、リストの最後の項目が正しく表示されません。ユーティリティクラスも使用しましたが、リストに変更はありません。ビューを拡張する他のソリューションはありません。この問題の解決を手伝ってください。

4

2 に答える 2

2

行を変更

params.height = getCount() * (old_count > 0 ? getChildAt(0).getHeight() : 0);

これに:

params.height = getCount() * (old_count > 0 ? getChildAt(0).getHeight() + 1 : 0);

これは、単一項目のリストでのみ機能します。

于 2013-11-21T08:32:34.190 に答える
1

この質問はすでに投稿されています。これを見て、拡張可能なリストで必要に応じてカスタマイズできます

このリンクは次のことに役立ちます。

AndroidでListViewの高さを動的に変更するには?

于 2012-09-28T06:18:31.017 に答える