Я разрабатываю приложение - список со многими элементами. В каждом элементе у меня есть текстовое представление с фоном. Как я могу переместить текст в центр текстового просмотра?

Мой код товара:

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

Мой текст:

my textview

Какие-либо предложения?

P.S Я уже пробовал android gravity = center, мое текстовое представление перемещается в центр элемента списка

2
Олег Медведев 6 Сен 2016 в 11:25

6 ответов

Лучший ответ

Добавьте следующий атрибут в свой 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"/>
6
earthw0rmjim 1 Янв 2017 в 17:14

В основном это из-за заполнения шрифта по умолчанию, чтобы удалить заполнение по умолчанию, вы должны добавить следующий код в свой макет xml внутри TextView: android: includeFontPadding = "false" например:

 <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" />
1
Rajendra 6 Сен 2016 в 08:38

Измените свой 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" />

enter image description here

1
Community 20 Июн 2020 в 09:12

Измените тег gravity TextView на "center"

0
Arjun Issar 6 Сен 2016 в 08:32

Используйте следующий атрибут:

 android:gravity="center"
0
j2ko 6 Сен 2016 в 08:33

Попробуйте таким образом, создайте один 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>

ВЫХОД

enter image description here

0
Aditya Vyas-Lakhan 6 Сен 2016 в 08:40