Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么“开始”和“结束”会因相对布局的重力而意外工作_Android_Android Relativelayout_Gravity_Layout Gravity - Fatal编程技术网

Android 为什么“开始”和“结束”会因相对布局的重力而意外工作

Android 为什么“开始”和“结束”会因相对布局的重力而意外工作,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

我在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_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
规则是否定义明确。