2017-03-08 39 views
2

我试图将一些TextViewsRelativeLayout内的水平中心对齐,但在使用某些属性时会得到一些意想不到的结果:RelativeLayout - android:layout_centerHorizo​​ntal =“true”AND android:gravity =“center_horizo​​ntal”显示意外的结果

  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> 

enter image description here

+0

你到底需要什么? –

+0

所有文本视图都要水平对齐中心 – MacaronLover

回答

3

layout_center_horizontal - 它只是观看位置,而不是里面的文字。您可以设置文本的重力来控制TextView内部的对齐方式,但如果您在wrap_content视图内使用RelativeLayout,则它不起作用,因为在这种情况下,文本已居中居中。它match_parent更改为LinearLayout,例如 - 和使用这样的:用你的

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

“LinearLayout”的建议代码是? – MacaronLover

+0

是的。只需将文本视图高度设置为wrap_content –

+0

关键是在线性布局内将文本视图置于另一个下方,并且视图宽度将拉伸至父级,但内部文本将居中居中。如果您对自己的观点没有背景知识 - 这是很好的解决方案。 –

1

替换此XML代码,我用LinearLayout instedof 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> 
+0

此视图将所有文本显示为屏幕中心,但如果只想将其作为水平中心,则移除LinearLayout的layout_gravity线 –

+0

不起作用。 '春夏秋冬'textviews仍然没有正确对齐。 – MacaronLover

0
  1. android:gravity="center_horizontal"作品与LinearLayout同时android:layout_centerHorizontal="true"RelativeLayout一起使用。

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

对于对齐所有TextView中心横向使用android:gravity="center_horizontal"财产父RelativeLayout。 或 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>  
相关问题