android布局:底视图的常量大小

时间:2016-05-19 08:47:38

标签: android-layout

我刚刚开始学习Android,并在实现特殊布局时遇到了问题。我阅读了很多关于布局的内容,并尝试了我想到的一切,但我无法解决它。可能很容易,我非常感谢你的帮助!

我需要一个简单的布局,顶部有一个较大的视图,底部有一个较小的视图。下部视图应具有150dp的恒定大小,上部视图的高度应可变,并填充其余部分。上面的一个是恒定大小没有问题,下面一个是其余的 - 但这不是我需要它的方式......

这是一个简化的截图,它应该是什么样子:

Screenshot

非常感谢!

1 个答案:

答案 0 :(得分:0)

你走了:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RelativeLayout
        android:id="@+id/rl_layout_one"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/holo_blue_light"
        android:layout_above="@+id/rl_layout_two">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_launcher"
            android:layout_centerInParent="true"/>
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rl_layout_two"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:background="@android:color/darker_gray"
        android:padding="15dp"
        android:layout_alignParentBottom="true">
    </RelativeLayout>


</RelativeLayout>

这符合您的期望。 Howerev,我想指出的是,一般来说,布局高度或宽度都没有指定。这是不好的做法。我建议另一个选项,使用带权重的LinearLayouts,找到下面的代码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="1">

<RelativeLayout
    android:id="@+id/rl_layout_one"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/holo_blue_light"
    android:layout_weight="0.4">

</RelativeLayout>

<RelativeLayout
    android:id="@+id/rl_layout_two"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/darker_gray"
    android:padding="15dp"
    android:layout_weight="0.6">
</RelativeLayout>


</LinearLayout>

希望这些帮助。

编辑1:

检查第一个解决方案,它缺少layout_above属性,这就是它占用整个屏幕空间并根据整个屏幕空间居中图像的原因。现在,它不会,因为布局一在布局二之上,它将根据布局一中心您的图像。