私はお互いの上に2つのListViewを持っています:
- 2 番目の ListView が空の場合、最初の ListView が領域全体を占める場合があります。
- 最初の ListView が空の場合、2 番目の ListView が領域全体を占める場合があります。
- 両方の ListView に項目がある場合、最初の ListView は 2 番目の ListView をプッシュ ダウンする必要がありますが、2 番目の ListView の少なくとも 60 dp は表示されたままにする必要があります。最初の ListView は、そのコンテンツよりも高くすることはできません。
このレイアウトでこれらすべての要件をほぼ解決しました。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@null"
android:cacheColorHint="@android:color/transparent"
/>
<ListView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:minHeight="60dp"
android:divider="@null"
android:cacheColorHint="@android:color/transparent"
/>
</LinearLayout>
2 番目の ListView が空の場合、最初の要件を満たすためにプログラムで Visibility を Gone に設定します。
ただし、最初の ListView がいっぱいになると、2 番目の ListView が消えるまで押し下げられます。
最初の ListView が大きくなりすぎたときに、layout_height をカスタム アダプターからプログラムで変更することで、これを解決しようとしました。しかし、リスト項目のサイズが異なるため、高さを固定値に変更した後、項目が追加または変更されたときにコンテンツの高さを検出する方法がわかりません。
これを解決する方法を知っている人はいますか?