垂直LinearLayout,带有权重& marginTop -ve

时间:2018-03-03 14:54:34

标签: android android-layout android-linearlayout

我想创建一个类似这样的屏幕,但底部没有白色空间(如果看不到空白区域,请点击图片)

红色部分应占据高度的40%。黑色布局剩余(60%+(-24dp marginTop))。

另外,我有两个不同的要求:

  1. 这个确切的屏幕(已由ADM回答)
  2. 整个屏幕应该可滚动(在NestedScrollView内)(需要解决方案)
  3. enter image description here

    以下是我的XML:

    <?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="100">
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="40"
        android:background="#f00"
        android:orientation="vertical" />
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_marginEnd="12dp"
        android:layout_marginStart="12dp"
        android:layout_marginTop="-24dp"
        android:layout_weight="60"
        android:background="@android:color/black"
        android:orientation="vertical" />
    
    </LinearLayout>
    

    我知道这可以通过给出一个固定的高度来解决,但我不想这样做。

1 个答案:

答案 0 :(得分:2)

解决方案可以是多个,也许FrameLayoutConstraitLayout很容易。以下是使用组合RelativeLayoutLinearLayout的解决方案。

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

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="10">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="4"
        android:background="#f00"
        android:orientation="vertical" />

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="10">

    <android.support.v4.widget.Space
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="3.8" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_weight="6.2"
        android:background="#000000"
        android:orientation="vertical" />


</LinearLayout>