Android 为什么“开始”和“结束”会因相对布局的重力而意外工作
我在Android Studio中做了一些相对布局重力的实验。我对得到的结果感到非常困惑。让我们看看我的xmlAndroid 为什么“开始”和“结束”会因相对布局的重力而意外工作,android,android-relativelayout,gravity,layout-gravity,Android,Android Relativelayout,Gravity,Layout Gravity,我在Android Studio中做了一些相对布局重力的实验。我对得到的结果感到非常困惑。让我们看看我的xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_pare
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="top" >
<Button
android:text="Apple"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginLeft="20dip" />
</RelativeLayout>
当我将android:gravity设置为左、右或下时,我得到了正确的重力效果。视图将相应地移动到左侧、右侧或底部。然而,如果我将android:gravity设置为顶部,则不会得到任何可见的效果
对我来说,还有其他几件怪事。值left、right、end移动视图,而值start不移动视图。为什么?如果我们使用LTR,“开始”必须等于左边。我知道值start | top是重力的默认值,但这无助于我理解问题。请帮我澄清一下情况。谢谢。我建议您将注意力集中在
ConstraintLayout
。我不知道RelativeLayout
提供了ConstraintLayout
无法提供的任何内容ConstraintLayout
是谷歌投资于持续改进和缺陷修复的地方。而且ConstraintLayout
来自一个库,因此您的结果可以在Android操作系统版本中更加一致。关于您的具体问题,您可能是第一个尝试使用Android:gravity
和RelativeLayout
的人android:gravity
是为其他类型的容器添加的(FrameLayout
,LinearLayout
等)。对于RelativeLayout
,您不需要它,而对于RelativeLayout
,您可以使用更明确的规则来指定其子项的大小和位置。我不确定RelativeLayout
上的android:gravity
规则是否定义明确。