如何在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_parent
或fill_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"