【问题标题】:How to center the textview horizontally and vertically in android如何在android中水平和垂直居中textview
【发布时间】:2023-04-11 02:18:01
【问题描述】:

如何在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>

【问题讨论】:

  • 尝试使用RelativeLayout。它将允许您以父母为中心。
  • 我试过了..但它与我的按钮和编辑文本字段重叠

标签: android textview center


【解决方案1】:

你可以使用:“center_horizo​​ntal|center_vertical”吗?

【讨论】:

    【解决方案2】:

    尝试将 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"/>
    

    这通常对我有用。

    【讨论】:

    • 它有效。但我的按钮与编辑文本字段重叠。我应该为按钮提供什么方向以将其带到编辑文本字段的左侧/下方。
    • 你能张贴你要找的截图吗?
    • 谢谢先生...但它对我有用..我使用了相对布局并使用了 android:layout_centerInParent="true"
    • 不客气 :) 如果有帮助,您能否将答案标记为正确?谢谢!
    【解决方案3】:

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

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

    或者只是

    textview.setGravity(Gravity.CENTER);

    【讨论】:

      【解决方案4】:

      使用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"/>
      

      【讨论】:

        【解决方案5】:

        试试这个..

        这是因为主要的LinearLayout orientationhorizontal,所以尝试如下代码。

        <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>
        

        【讨论】:

        • 谢谢……它对我有用……也可以将线性布局放在相对布局中吗?
        • @sangeetha 是的,这是可能的。
        • 我是安卓初学者。我开始从 developer.android.com 学习。但我无法遵循它。所以想开发一些简单的应用程序,以便我边做边学。能给我推荐一些简单的应用吗?
        • 你想实现哪种应用@sangeetha??
        • @sangeetha 参考这两个像vogella.com/tutorials/Android/article.htmlandroidexample.com 有很多简单的例子。
        【解决方案6】:

        您可以用RelativLayout 包围您的LinearLayout,并稍微更改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

        干杯

        【讨论】:

          【解决方案7】:
          <TextView
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="My text"
              android:layout_centerHorizontal="true"
              android:layout_centerVertical="true" />
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-03-23
            • 1970-01-01
            • 2019-07-19
            • 2015-08-29
            相关资源
            最近更新 更多