首页 > 解决方案 > Android LinearLayout 非对称居中

问题描述

在下面的布局中,如何确保blue_view在屏幕上水平居中(即它的左边缘和右边缘完全对齐red_view)?

我知道有办法用ConstraintLayoutand来做到这一点RelativeLayout。我很好奇是否有办法用LinearLayout.

<?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">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <View
            android:id="@+id/blue_view"
            android:layout_width="200dp"
            android:layout_height="50dp"
            android:background="@color/blue"
            android:layout_marginEnd="20dp"/>

        <View
            android:id="@+id/green_view"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@color/green"/>

    </LinearLayout>

    <View
        android:id="@+id/red_view"
        android:layout_width="200dp"
        android:layout_height="50dp"
        android:background="@color/red"
        android:layout_marginTop="20dp"
        android:layout_gravity="center_horizontal"/>

</LinearLayout>

当前布局的图像

在此处输入图像描述

所需布局

在此处输入图像描述

标签: androidandroid-linearlayout

解决方案


看看这个

<?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">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginLeft="35dp"
        android:orientation="horizontal">

        <View
            android:id="@+id/blue_view"
            android:layout_width="200dp"
            android:layout_height="50dp"
            android:layout_gravity="center_horizontal"
            android:background="@color/blue"
            android:layout_marginRight="20dp"/>

        <View
            android:id="@+id/green_view"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@color/green"/>

    </LinearLayout>

    <View
        android:id="@+id/red_view"
        android:layout_width="200dp"
        android:layout_height="50dp"
        android:background="@color/red"
        android:layout_marginTop="20dp"
        android:layout_gravity="center_horizontal"/>

</LinearLayout>

输出:-在此处输入图像描述

它可能会解决你的问题....

这都是关于添加 android:layout_marginLeft="35dp"因为你已经给marginRight="20dp"它一个childView而另一个childView50dp中心尺寸。


推荐阅读