如何在android中垂直居中文本

我有阿拉伯语的文字,所以我把重力放在正确的位置,以便从右侧开始input文字。 文本从现在开始。 但另一个问题是文本开始从页面顶部呈现。 但是我需要垂直居中文本。 虽然我尝试了几个变化,我不能让它垂直居中。

这是我的XML文件的示例。

<LinearLayout android:id="@+id/linearLayout5" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="right" android:orientation="vertical" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginBottom="23dp" android:gravity="right" android:padding="@dimen/padding_maintextview" android:text="@string/text" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="20sp" /> </LinearLayout> 

问题在于上面的textview。

这里我已经把整个XML文件。

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/page1background" android:paddingRight="@dimen/padding_large" > <TextView android:id="@+id/textView1" android:layout_width="196dp" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:gravity="center_horizontal" android:paddingTop="@dimen/padding_Title_Top" android:text="@string/text" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="20sp" /> <LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView1" android:gravity="center_horizontal" android:orientation="vertical" > <View android:id="@+id/view1" android:layout_width="fill_parent" android:layout_height="5dp" /> </LinearLayout> <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_above="@id/linearLayout2" android:layout_below="@id/linearLayout1" android:layout_gravity="center" android:padding="@dimen/padding_maintextview" > <LinearLayout android:id="@+id/linearLayout5" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="right" android:orientation="vertical" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginBottom="23dp" android:gravity="right" android:padding="@dimen/padding_maintextview" android:text="@string/text" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="20sp" /> </LinearLayout> </ScrollView> <LinearLayout android:id="@+id/linearLayout2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" > <View android:id="@+id/view2" android:layout_width="fill_parent" android:layout_height="100dp" /> </LinearLayout> <LinearLayout android:id="@+id/linearLayout3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" > <ImageButton android:id="@+id/back_arrow" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_marginBottom="30dp" android:layout_marginRight="45dp" android:layout_weight=".5" android:background="@drawable/backbut" android:contentDescription="@string/Description" android:onClick="onClickBtn" android:src="@drawable/backarrowpress" /> <ImageButton android:id="@+id/copyButton" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_marginLeft="45dp" android:layout_weight=".5" android:background="@drawable/copy" android:contentDescription="@string/Description" android:onClick="onClickBtn" /> </LinearLayout> </RelativeLayout> 

有人可以告诉我我犯了什么错误吗? 我觉得问题很清楚。 如果不在评论中告诉我。

因此,我在审查您的答案后附加了更新后的代码。

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/page1background" android:paddingRight="@dimen/padding_large" > <TextView android:id="@+id/textView1" android:layout_width="196dp" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:gravity="center_horizontal" android:paddingTop="@dimen/padding_Title_Top" android:text="@string/text" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="20sp" /> <LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView1" android:gravity="center_horizontal" android:orientation="vertical" > <View android:id="@+id/view1" android:layout_width="fill_parent" android:layout_height="5dp" /> </LinearLayout> <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@id/linearLayout2" android:layout_below="@id/linearLayout1" android:layout_gravity="center" android:layout_centerInParent="true" android:padding="@dimen/padding_maintextview" > <LinearLayout android:id="@+id/linearLayout5" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="right" android:orientation="vertical" > <TextView android:id="@+id/textView2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center_vertical" android:layout_marginBottom="23dp" android:gravity="center_vertical|right" android:padding="@dimen/padding_maintextview" android:text="@string/text" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="20sp" /> </LinearLayout> </ScrollView> <LinearLayout android:id="@+id/linearLayout2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" > <View android:id="@+id/view2" android:layout_width="fill_parent" android:layout_height="100dp" /> </LinearLayout> <LinearLayout android:id="@+id/linearLayout3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" > <ImageButton android:id="@+id/back_arrow" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_marginBottom="30dp" android:layout_marginRight="45dp" android:layout_weight=".5" android:background="@drawable/backbut" android:contentDescription="@string/Description" android:onClick="onClickBtn" android:src="@drawable/backarrowpress" /> <ImageButton android:id="@+id/copyButton" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_marginLeft="45dp" android:layout_weight=".5" android:background="@drawable/copy" android:contentDescription="@string/Description" android:onClick="onClickBtn" /> </LinearLayout> </RelativeLayout> 

但是我处于同样的情况。 没有文字是垂直居中

你的TextView属性需要是类似的东西,

 <TextView ... android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical|right" ../> 

现在,说明为什么需要这样做,

  android:layout_width="match_parent" android:layout_height="match_parent" 

使您的TextView fill_parentfill_parent如果你不想这样, match_parent你必须给layout_height一些指定的值,以便获得垂直中心重力的空间。 android:layout_width="match_parent"必要的,因为它将您的TextView放在右侧,这样您就可以识别对TextView的父布局的尊重。

现在,它的android:gravity ,使您的TextView的内容alignment。 android:layout_gravity使TextView android:layout_gravity布局alignment。

更新:

如下面的评论说使用fill_parent而不是match_parent 。 (在一些设备的问题。)

只是这样使用任何东西来居中

  android:layout_gravity="center" android:gravity="center" 

更新 :

 android:layout_gravity="center|right" android:gravity="center|right" 

更新:只需从你的textview中删除MarginBottom ..做这个..为你的textView

 <LinearLayout android:id="@+id/linearLayout5" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" > <TextView android:id="@+id/textView2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center|right" android:text="hello" android:textSize="20dp" /> </LinearLayout> 

尝试把android:gravity="center_vertical|right"放在父LinearLayout中,就像你在RelativeLayout中一样,你可以在你的scrollView放入android:layout_centerInParent="true"

问题是textview上字体的填充。 只需添加到您的文本视图:

 android:includeFontPadding="false" 

在相对布局中,您需要指定文本视图高度:

 android:layout_height="100dp" 

或者指定行属性:

 android:lines="3"