2

リストビューの stackFromBottom XML 属性を true に設定しているので、アクティビティが開いたときに、リストビューの最後のアイテムが、デフォルトのように一番上のアイテムではなく表示されます。

ただし、リストビューの最後の項目が画面の上部に配置されるように、アクティビティを開いてください。つまり、この最後の項目の下に、残りのスペースを占有する空白スペースが必要です。

リストビューにフッタービューを追加して、これを実行しようとしました:

View footer = inflater.inflate(R.layout.empty_view, listview, false);
ViewGroup.LayoutParams lp = footer.getLayoutParams();
lp.height = ???;
footer.setLayoutParams(lp);
listview.addFooterView(footer);

問題は、アクティビティの onCreate 関数の実行中に、空白のフッター ビューに割り当てる高さがわからないことです。空白のフッター ビューを作成する高さを決定するには、リストビューの最後のアイテムの高さを知る必要がありますが、この最後のリストビュー アイテムの高さは固定数ではありません。

最後のリストビュー項目の高さを取得するにはどうすればよいですか? それとも、これを完全に行うためのより良い方法がありますか?

4

1 に答える 1

0

この問題に対する非常に簡単な解決策を見つけました。ListView を FrameLayout でラップするだけです。どうやら配置は、他の ViewGroups とは異なる方法で処理されます。

これは私の作業コードです:

<FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <ListView
            android:id="@+id/list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:stackFromBottom="true" />
</FrameLayout>

別のアプローチは、android:stackFromBottom を削除し、手動でスクロールして属性の動作をシミュレートすることです。これにより、追加のレイヤーを節約できますが、余分な複雑さを追加することはお勧めしません.

于 2015-07-09T09:54:45.417 に答える