【问题标题】:RelativeLayout - android:layout_centerHorizontal="true" AND android:gravity="center_horizontal" showing unexpected resultsRelativeLayout - android:layout_centerHorizo​​ntal="true" AND android:gravity="center_horizo​​ntal" 显示意外结果
【发布时间】:2017-03-08 21:09:03
【问题描述】:

我正在尝试将一些 TextViewsRelativeLayout 内的水平中心对齐,但在使用某些属性时会得到一些意想不到的结果:

  1. 为什么第二个“春夏秋冬”TextView 和第一个“Hello World”TextView 移动到水平中心(即使它们都使用不同的水平文本对齐属性)?
  2. android:layout_centerInParent="true" 用作顶部TextView 将其移动到屏幕中心(这不是我想要的)

是否有一个属性可用于将所有TextViews 对齐到水平中心?

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin">

        <TextView
            android:id="@+id/textView0"
            style="@android:style/TextAppearance.Medium"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:text="Spring Summer Autumn Winter"
            android:layout_marginBottom="20dp"
            android:textColor="@android:color/white" />

        <TextView
            android:id="@+id/textView1"
            style="@android:style/TextAppearance.Medium"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:text="Spring Summer Autumn Winter"
            android:layout_below="@id/textView0"/>

        <TextView
            android:id="@+id/textView2"
            style="@android:style/TextAppearance.Medium"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:text="Hello World"
            android:layout_below="@id/textView1"/>

        <TextView
            android:id="@+id/textView3"
            style="@android:style/TextAppearance.Medium"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:text="Hello World"
            android:layout_below="@id/textView2"/>
    </RelativeLayout>
</ScrollView>

【问题讨论】:

    标签: android xml textview android-relativelayout


    【解决方案1】:

    layout_center_horizontal - 仅用于视图位置,而不用于内部文本。您可以设置文本的重力以控制TextView 内部的对齐方式,但如果您在内部使用RelativeLayoutwrap_content 视图,它将不起作用,因为在这种情况下,文本已经很好地居中。例如,使用match_parent 将其更改为LinearLayout - 并使用类似:

    <TextView  
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center"
    android:text="@string/**yourtextstring**"
    />
    

    【讨论】:

    • 是的。只需将文本视图高度设置为 wrap_content
    • 关键是在线性布局中将有一个位于另一个下方的文本视图,并且视图宽度将被拉伸到父级,但内部的文本会很好地居中。如果您的观点没有背景 - 这是一个很好的解决方案。
    • 太棒了,感谢您的帮助,您的建议效果最佳。
    【解决方案2】:

    用你的替换这个 XML 代码,我用 LinearLayoutinstedof RelativeLayout

    <?xml version="1.0" encoding="utf-8"?>
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Hello World" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Hello World" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Hello World" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Hello World" />
    
    </LinearLayout>
    </ScrollView>
    

    【讨论】:

    • 此视图将所有文本显示为屏幕中心,但如果您只想水平居中,则删除 LinearLayout 的 layout_gravity 线
    • 不起作用。 “春夏秋冬”文本视图仍然没有正确对齐。
    【解决方案3】:
    1. android:gravity="center_horizontal"LinearLayout 一起使用,而android:layout_centerHorizontal="true"RelativeLayout 一起使用。

    2. android:layout_centerInParent="true" 在屏幕中心调整视图,同时它应该在水平中心。为此使用android:layout_centerHorizontal="true"。它适用于RelativeLayout

    要对齐所有TextView 水平居中,请使用父RelativeLayout 中的android:gravity="center_horizontal" 属性。 要么 android:layout_centerHorizontal="true" 将此分配给每个 TextView

    下面的代码对你有用。

    <?xml version="1.0" encoding="utf-8"?>
      <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        >
    
        <TextView
            android:id="@+id/textView0"
            style="@android:style/TextAppearance.Medium"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Spring Summer Autumn Winter"
            android:layout_marginBottom="20dp"
            android:textColor="@android:color/white"
            android:layout_centerHorizontal="true"/>
    
        <TextView
            android:id="@+id/textView1"
            style="@android:style/TextAppearance.Medium"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Spring Summer Autumn Winter"
            android:layout_below="@id/textView0"
            android:layout_centerHorizontal="true"/>
    
        <TextView
            android:id="@+id/textView2"
            style="@android:style/TextAppearance.Medium"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World"
            android:layout_below="@id/textView1"
            android:layout_centerHorizontal="true"/>
    
        <TextView
            android:id="@+id/textView3"
            style="@android:style/TextAppearance.Medium"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World"
            android:layout_below="@id/textView2"
            android:layout_centerHorizontal="true"/>
      </RelativeLayout>
    </ScrollView>    
    

    【讨论】:

      猜你喜欢
      • 2017-04-04
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 2012-07-10
      • 2014-10-18
      • 1970-01-01
      相关资源
      最近更新 更多