如何在android中水平和垂直居中textview

时间:2014-03-28 04:27:40

标签: android textview center

如何在Android中水平和垂直居中 TextView。我尝试使用gravity:center。但是文本显示在center vertically中。我希望它也能水平显示。怎么做。

这是我的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.display.MainActivity$PlaceholderFragment" >

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/edit_mesaage"
        android:hint="@string/edit_message" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/send"
        android:id="@+id/send"
        android:onClick="displaym"/>   
     <TextView 
         android:id="@+id/display_mes"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="center"/>
</LinearLayout>

7 个答案:

答案 0 :(得分:3)

你能使用:&#34; center_horizo​​ntal | center_vertical&#34;?

答案 1 :(得分:0)

您也可以使用以下方式动态设置:

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

或者只是

textview.setGravity(Gravity.CENTER);

答案 2 :(得分:0)

尝试将LinearLayout更改为RelativeLayout。然后,对于TextView,请尝试

<TextView 
     android:id="@+id/display_mes"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_centerHorizontal="true"
     android:layout_centerVertical="true"/>

这通常适合我。

答案 3 :(得分:0)

使用android:gravity="center_horizontal|center_vertical"

由于android:gravity会影响您拥有的视图的内容,而属性android:layout_gravity="center"应根据父级设置整个view布局的中心。因此,要使textView中的文字居中使用

<TextView 
     android:id="@+id/display_mes"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:gravity="center_horizontal|center_vertical"/>

答案 4 :(得分:0)

试试这个..

因为主LinearLayout 方向horizontal,所以请尝试使用以下代码。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.display.MainActivity$PlaceholderFragment" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <EditText
            android:id="@+id/edit_mesaage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="@string/edit_message" />

        <Button
            android:id="@+id/send"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="displaym"
            android:text="send" />
    </LinearLayout>

    <TextView
        android:id="@+id/display_mes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:text="textview" />

</LinearLayout>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.display.MainActivity$PlaceholderFragment" >

    <EditText
        android:id="@+id/edit_mesaage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="@string/edit_message" />

    <Button
        android:id="@+id/send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/edit_mesaage"
        android:onClick="displaym"
        android:text="send" />

    <TextView
        android:id="@+id/display_mes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="textview" />

</RelativeLayout>

答案 5 :(得分:0)

您可以使用LinearLayout包围RelativLayout并稍微更改LinearLayout上的布局参数,如下所示:

<RelativeLayout
    xmlns:Android="..."
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true">

        ... 

    </LinearLayout>

</RelativeLayout>

这将确保您的按钮和文本视图之间的内部关系不变,因为它们仍然被LinearLayout包裹,而RelativeLayout又不再填充屏幕,因此,它可以是以新的父母为中心; {{1}}。

干杯

答案 6 :(得分:0)

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="My text"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true" />