android - Android LinearLayout 非对称居中
问题描述
在下面的布局中,如何确保blue_view
在屏幕上水平居中(即它的左边缘和右边缘完全对齐red_view
)?
我知道有办法用ConstraintLayout
and来做到这一点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>
当前布局的图像:
所需布局:
解决方案
看看这个
<?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
而另一个childView
是50dp
中心尺寸。
推荐阅读
- javascript - Vue表单未提交
- protractor - 量角器:上传图像在 chrome 无头模式下不起作用
- multithreading - 单个 ActiveMQ 会话上的多个消费者
- android - 不接受 Android SDK 许可证
- redis - redis集群中如何重启节点
- reactjs - 在纯 ReactJS 应用程序 (SPA) 上进行无重定向的身份验证?
- java - 为什么我的解决方案对于 codechef 上的 Rainbow Array 问题是错误的?
- css - 如何定义shinydashboard开始包装元素并隐藏侧边栏的屏幕宽度?
- tensorflow - 我无法在 jupyterlab 中导入 tensorflow,尽管我可以在 anaconda 提示符中导入 tensorflow
- visual-studio-code - VS Code 不会解析 wsl 路径