【问题标题】:What is the priority about gravity and layout_gravity in android?android中重力和layout_gravity的优先级是什么?
【发布时间】:2017-03-17 19:11:24
【问题描述】:

我正在测试 LinearLayout 并创建一个带有 2 个 TextViews 的 LinearLayoutLinearLayout 具有属性gravity="center_vertical"LinearLayout 中的第一个TextView 具有属性layout_gravity="top"

LinearLayoutgravity="center_vertical" 将其内容垂直居中。

layout_gravity="top" of TextView 告诉其容器将我放在顶部。

如果他们在一起会发生什么?

在我的实验中,'layout_gravity="top"' 不起作用。

以下是我的代码和结果:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    android:text="textview 1"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="textview 2"/>

</LinearLayout>

【问题讨论】:

    标签: android android-layout android-gravity


    【解决方案1】:

    很可能,父元素的重力是第一个被执行的。您看不到 layout_gravity top 的效果,因为它遵循重力设置为其父元素。如果您不希望第一个 textview 出现在中间,则不应将重力 center_vertical 设置为 linearlayout。

    【讨论】:

      【解决方案2】:

      Jay Bryant Casilang 的说法有些正确。这是因为父母的重力。但还有更多。也是因为它是LinearLayout

      https://developer.android.com/guide/topics/ui/layout/linear.html

      LinearLayout 旨在让视图在垂直或水平方向上彼此“相邻”。因为您在LinearLayout 上设置android:gravity="center_vertical",在第一个android:layout_gravity="top" 上设置TextView,您希望看到的是:

      但是,这意味着两个布局之间会有间距。 “未说明”的间距(无边距、无填充等)。

      LinearLayout 不允许这样做。

      LinearLayout 的所有子级必须以某种方式彼此相邻(以线性方式,明白吗?)

      顺便说一句,我是这样达到顶峰的:

      <?xml version="1.0" encoding="utf-8"?>
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent">
      
          <TextView
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="textview 1"/>
      
          <TextView
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_centerVertical="true"
              android:text="textview 2"/>
      
      </RelativeLayout>
      

      希望这很清楚。

      【讨论】:

        猜你喜欢
        • 2011-03-29
        • 1970-01-01
        • 2012-12-07
        • 1970-01-01
        • 1970-01-01
        • 2011-05-14
        • 1970-01-01
        • 2014-03-12
        相关资源
        最近更新 更多