将layout_weight与minWidth结合使用

时间:2015-08-13 06:16:34

标签: android android-layout

我有一个布局,我想使用layout_weight(1:2)分成2个视图。但是,我希望左视图的宽度至少为400dp。

例如,如果左视图通过使用权重获得420dp宽度,则保留它,但如果它小于400dp,则将其保留为400dp,并将所有其余视图提供给另一视图。

这是我尝试过但不适合我的布局。

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:minWidth="400dp"
            android:background="@android:color/holo_blue_bright"/>

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="2"
            android:background="@android:color/holo_green_light"/>

    </LinearLayout>

请帮忙, 谢谢!

2 个答案:

答案 0 :(得分:2)

我认为这就是你所需要的:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <View
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:minWidth="400dp"
        android:background="@android:color/holo_blue_bright"/>

    <View
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="match_parent"
        android:background="@android:color/holo_green_light"/>

</LinearLayout>

基本上,让第一个布局占用所需的空间但不低于400dp。第二个将采取剩下的所有。与涉及weight的所有情况一样,请确保2个孩子所需的空间(宽度)小于父母可以提供的空间,否则您将屏幕外的东西。

注意:我在电话布局上尝试了它,但是400dp在屏幕上是纵向的,所以看起来第一个布局占用了所有空间,所以请确保在设备上试用它在你想要的布局范围方向上超过400dp: - )

答案 1 :(得分:-1)

Try this:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:weightSum="3" >

    <View
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="@android:color/holo_blue_bright"
        android:minWidth="400dp" />

    <View
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="2"
        android:background="@android:color/holo_green_light" />

</LinearLayout>