【问题标题】:How to center text on TextView's background如何在 TextView 的背景上居中文本
【发布时间】:2016-09-06 08:25:57
【问题描述】:

我正在开发一个应用程序 - 包含许多项目的列表视图。在每个项目中,我都有带有背景的文本视图。如何将文本移动到 textview 的中心?

我的商品代码:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="75dp"
    android:layout_marginTop="10dp">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/lesson_name"
        android:id="@+id/tv_lesson"
        android:layout_gravity="center_horizontal|top"
        android:textAlignment="center"
        android:textStyle="normal|bold"
        android:textSize="20sp"
        tools:targetApi="jelly_bean_mr1" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Время"
        android:id="@+id/tv_time"
        android:layout_gravity="center"
        android:layout_marginTop="4dp"
        android:layout_marginBottom="10dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/teacher_name"
        android:id="@+id/tv_teacher"
        android:layout_gravity="center_horizontal|bottom"
        android:textStyle="italic" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Кабинет"
        android:id="@+id/tv_cab"
        android:layout_gravity="center_horizontal|bottom"
        android:layout_marginTop="4dp"
        android:layout_marginBottom="17dp" />

    <TextView
        android:layout_width="45dp"
        android:layout_height="45dp"
        **android:id="@+id/tv_number"**
        android:layout_gravity="center_vertical"
        android:background="@drawable/oval"
        android:textIsSelectable="false"
        android:textStyle="normal|bold"
        android:textSize="40sp"
        android:layout_marginLeft="10dp"
        android:text="1"
        android:textColor="#ffffff"
        tools:targetApi="jelly_bean_mr1"
        android:textAlignment="inherit" />
</FrameLayout>

我的文字:

有什么建议吗?

P.S 我已经尝试过android重力=中心,我的文本视图移动到列表项的中心

【问题讨论】:

标签: android listview textview


【解决方案1】:

将以下属性添加到您的TextView

android:gravity="center"

应该是这样的:

<TextView
    android:layout_width="45dp"
    android:layout_height="45dp"
    android:layout_gravity="center_vertical"
    android:gravity="center"
    android:layout_marginStart="10dp"
    android:layout_marginLeft="10dp"
    android:background="@drawable/oval"
    android:textIsSelectable="false"
    android:textStyle="normal|bold"
    android:textSize="40sp"
    android:text="1"
    android:textColor="#000000"/>

【讨论】:

  • @ОлегМедведев 请停止一遍又一遍地重新发布相同的评论。这对user13 不公平。如果他们想帮助这取决于他们 - 如果这是一个可以独立存在的问题,那么您应该考虑提出一个新问题。谢谢。
【解决方案2】:

基本上这是因为默认字体填充,要删除默认填充,您应该在 TextView 内的布局 xml 中添加以下代码: 机器人:includeFontPadding="假" 例如:

 <TextView
            android:id="@+id/tv_number"
            android:layout_width="45dp"
            android:layout_height="45dp"
            android:layout_gravity="center_vertical"
            android:gravity="center_vertical"
            android:layout_marginLeft="10dp"
            android:background="#000000"
            android:text="2222"
            android:textAlignment="inherit"
            android:textColor="#ffffff"
            android:textIsSelectable="false"
            android:textSize="40sp"
            android:textStyle="normal|bold"
            android:includeFontPadding="false"
            tools:targetApi="jelly_bean_mr1" />

【讨论】:

  • 谢谢,android:includeFontPadding="false" 为我正确居中!
【解决方案3】:

把你的Text View改成这样。

android:layout_gravity 物业将移动您的全部 Text View。而android:gravity 只会移动其中的内容 Text View 这是它们之间的主要区别

<TextView
        android:id="@+id/tv_number"
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:layout_gravity="center_vertical"
        android:gravity="center"
        android:layout_marginLeft="10dp"
        android:background="#000000"
        android:text="2222"
        android:textAlignment="inherit"
        android:textColor="#ffffff"
        android:textIsSelectable="false"
        android:textSize="40sp"
        android:textStyle="normal|bold"
        tools:targetApi="jelly_bean_mr1" />

【讨论】:

    【解决方案4】:

    将TextView的'gravity'标签改为“center”

    【讨论】:

      【解决方案5】:

      使用以下属性:

       android:gravity="center"
      

      【讨论】:

        【解决方案6】:

        试试这个方法,为背景创建一个xml

        test.xml

         <?xml version="1.0" encoding="utf-8"?>
            <selector
                xmlns:android="http://schemas.android.com/apk/res/android">
                <item>
                    <shape>
                        <solid android:color="#f2f" />
        
                        <size
                            android:height="150dp"
                            android:width="150dp" />
        
                    </shape>
                </item>
            </selector>
        

        activity_main.xml

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="vertical" android:layout_width="match_parent"
            android:layout_height="match_parent">
        
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="3"
                android:gravity="center"
                android:background="@drawable/test"
                android:textSize="15dp"
                android:textColor="#ffffff"
                />
        
        </LinearLayout>
        

        输出

        【讨论】:

          猜你喜欢
          • 2013-09-18
          • 1970-01-01
          • 2014-03-29
          • 2011-05-17
          • 1970-01-01
          • 1970-01-01
          • 2011-06-14
          • 2023-03-23
          • 1970-01-01
          相关资源
          最近更新 更多