【问题标题】:centering textView in RelativeLayout在相对布局中居中 textView
【发布时间】:2018-10-04 05:49:48
【问题描述】:

有人知道为什么下面的代码没有使按钮中的文本居中

但是第二个呢?

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center" >

    <Button
        android:id="@+id/gotItButton"
        android:layout_width="250dp"
        android:layout_height="50dp"
        android:layout_gravity="center"
        android:layout_marginTop="5dp"
        android:background="@drawable/btn_selector"
        android:padding="0dp" />

    <com.m.view.text.MyTextView
        android:id="@+id/gotItText"
        style="@style/textOnBg"
        android:layout_marginTop="25dp"
        android:text="Got it"
        android:textColor="#00bcfe"
        android:textSize="16dp"
        android:textStyle="italic" />
</RelativeLayout>

父级中的gravity 和每个子级中的layout_gravity 不是相同的

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center" >

        <Button
            android:id="@+id/gotItButton"
            android:layout_width="250dp"
            android:layout_height="50dp"
            android:layout_gravity="center"
            android:layout_marginTop="5dp"
            android:layout_centerInParent="true"
            android:background="@drawable/btn_selector"
            android:padding="0dp" />

        <com.m.view.text.MyTextView
            android:id="@+id/gotItText"
            style="@style/textOnBg"
            android:layout_marginTop="25dp"
            android:layout_centerInParent="true"
            android:text="Got it"
            android:textColor="#00bcfe"
            android:textSize="16dp"
            android:textStyle="italic" />
    </RelativeLayout>

【问题讨论】:

  • 好吧,对于初学者来说,第一个代码在 TextView 中不包含重力属性,而第二个代码包含。既然你的 RelativeLayouts 宽度设置为 match_parent,我们怎么知道文本不只是填满整个宽度?
  • 你没有做任何关于将 TextView 在第一个居中的事情。 RelativeLayout 上的android:gravity="center" 与您的孩子无关。

标签: android android-layout android-relativelayout


【解决方案1】:

gravity 在您的按钮内。 layout_gravity 在外面(在父节点中)

所以,你的 RelativeLayout 中不需要重力,在 Button 中移动它。

并从按钮中删除layout_gravity,因为您使用centerInParent

【讨论】:

  • 重力在里面 - 所以当在 RelativeLayout 它应该影响它的所有孩子。没有?
  • 理论上。但为此,您最好在子级上使用 centerInParent(如果父级是 RelativeLayout)或 layout_gravity(如果父级是 LinearLayout)。请注意,孩子也可以是另一个容器,所以...完全没问题
猜你喜欢
  • 1970-01-01
  • 2015-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-10
  • 2011-02-16
  • 2012-12-17
相关资源
最近更新 更多