Android 身高 wrap_content 固定比例

Android height wrap_content with fix ratio

我的 XML 文件有一个 LinearLayout 包含两个 ListViewandroid:height="wrap_content"。但是,当其中一个 ListView 的内容过多时,它会推入另一个 ListView 并吃掉它的 space。我该怎么做才能让它在一定高度停止推动?我试过添加 layout-weightmaxHeight 但它没有帮助。

如果您希望将两个 ListViews 均分的金额相同,只需将它们放在 LinearLayout.

中即可

LinearLayout 会有 属性 weightSum=2ListViews 都会有,这取决于 LinearLayout orientation property:

如果 vertical -> ListViews 将有 android:height="0dp"layout-weight=1

如果 horizontal -> ListViews 都会有 android:width="0dp"layout-weight=1

试试这个:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/green_bg_duplicate"
    android:gravity="center"
    android:orientation="vertical"
    android:weightSum="2">

    <RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:weightSum="1" />

    <RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:weightSum="1" />

</LinearLayout>

我通过编程方式解决了这个问题。似乎 XML 对动态高度没有太多控制。我将 onLayoutChangedListener 添加到 ListView 以检测高度变化并在侦听器中添加高度控制逻辑。