如何解决关于layout_gravity和重力的垂直和水平方向之间的差异
我在LinearLayout中有一个TextView。
我想为layout_gravity和gravity尝试不同的模式。
<LinearLayout
android:layout_width="150dp"
android:layout_height="50dp"
android:background="#A55C93"
android:orientation="horizontal">
<TextView
android:id="@+id/textView1"
android:background="#005Cff"
android:layout_gravity="center"
android:gravity="center"
android:layout_width="50dp"
android:layout_height="25dp"
android:text="text"
android:textSize="21sp" />
</LinearLayout>
当我有android:orientation="vertical"
时,关于layout_gravity
和gravity
的一切都有意义。但是当我有android:orientation="horizontal"
时,输出与第一个不同,为什么?
解决方法
尝试此代码,您将看到区别 增加布局高度以查看差异;它将帮助您更好地了解流程
将重心设置为水平线性布局时,该中心不指水平中心,而是指垂直中心。
我知道这听起来很混乱,但是尝试这段代码,您将对我想说的话有一个更好的了解。
<LinearLayout
android:layout_width="150dp"
android:layout_height="500dp"
android:background="#A55C93"
android:orientation="horizontal"
>
<TextView
android:id="@+id/textView1"
android:background="#005Cff"
android:layout_gravity="center"
android:layout_width="50dp"
android:layout_height="25dp"
android:text="text"
android:textSize="21sp"
/>
</LinearLayout>
也可以尝试垂直
<LinearLayout
android:layout_width="150dp"
android:layout_height="500dp"
android:background="#A55C93"
android:orientation="vertical"
tools:ignore="MissingConstraints"
>
<TextView
android:id="@+id/textView1"
android:background="#005Cff"
android:layout_gravity="center"
android:layout_width="50dp"
android:layout_height="25dp"
android:text="text"
android:textSize="21sp"
/>
</LinearLayout>
尝试将多个视图添加到布局中,这将帮助您给出精确的想法。 换句话说,如果您将布局重心设置为水平对齐,则在水平方向的线性布局中将视图与线性布局的高度中心对齐;如果将布局重心设置为垂直对齐的线性布局,则将视图中心对齐为线性布局的宽度
,主要要理解的是,子视图上的layout_gravity
是一个属性,该属性将“向上”传达给父级,并“询问”父级以某种方式行事。
在这种情况下,父级是LinearLayout
,它具有不同的属性(orientation
),该属性已经影响子视图的位置。因此,当孩子指定layout_gravity
时,发生的情况取决于LinearLayout
的{{1}}。
- 对于
orientation
的LinearLayout,将忽略子级horizontal
的任何水平分量。 - 对于
layout_gravity
的LinearLayout,将忽略子级vertical
的任何垂直分量。
您正在使用layout_gravity
,基本上是center
+ center_vertical
。因此,对于水平LinearLayout,将忽略水平居中。而且,对于垂直的LinearLayout,将忽略垂直居中。
鉴于您的示例仅具有一个子视图,您可以考虑将父center_horizontal
替换为LinearLayout
。然后孩子FrameLayout
将得到充分尊重。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。