web-dev-qa-db-ja.com

androidでテキストを垂直方向に中央に揃える方法

アラビア語のテキストがあるので、右側からテキストを開始するために重力を右に設定します。テキストは今から始まります。しかし、別の問題は、ページの上部からテキストのレンダリングが開始されることです。しかし、テキストを垂直方向に中央揃えする必要があります。いくつかのバリエーションを試しましたが、垂直方向の中央に配置できませんでした。

これが私の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>

しかし、私は同じ状況にいます。テキストは垂直方向に中央揃えされません

44
newday

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をmatch_parentまたはfill_parentに設定します。そのようになりたくない場合は、match_parentに指定された値をlayout_heightに与えて、垂直中心の重力のためのスペースを確保する必要があります。 Android:layout_width="match_parent"は、TextViewを右側に揃えてTextViewの親レイアウトを尊重できるようにするために必要です。

これで、Android:gravityがTextViewの位置合わせの内容になります。 Android:layout_gravityは、親レイアウトに合わせてTextViewのアライメントを行います。

更新:

以下のように、コメントはfill_parentの代わりにmatch_parentを使用します。 (一部のデバイスの問題。)

107
user370305

このように使用して、中心に何かを作成します

 Android:layout_gravity="center"
 Android:gravity="center"

更新しました :

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

更新:テキストビューからMarginBottomを削除するだけです。

<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>
17
Rahul Baradia

問題は、textviewのフォントのパディングです。テキストビューに追加するだけです:

Android:includeFontPadding="false"
10
jegumi

Android:gravity="center_vertical|right"親LinearLayout内、またはRelativeLayout内にいる場合は、Android:layout_centerInParent="true"scrollView内。

8
Android Killer

相対レイアウトでは、textviewの高さを指定する必要があります。

Android:layout_height="100dp"

または、行属性を指定します。

Android:lines="3"
0
tier777