Атрибут гравитации TextView не работает

У меня есть textView в LinearLayout, который отображает текст не всегда по центру, даже если я использую атрибутgravity="center". Также я установил layou_width с «match_parent.

Этот textView находится в LinearLayout, который находится в LinearLayout, который находится в родительском LinearLayout представления.

Мой textView находится в ListView и представляет собой конец строки элемента.

Мой адаптер использует шаблон ViewHolder.

Здесь я действительно не понимаю, почему иногда текст в центре, а иногда слева.

Вот 2 скриншота моего представления с разными состояниями, где вы можете увидеть проблему с выравниванием:

example1

example2

example3

Что хотелось бы иметь: Здесь речь идет именно о тексте Сейчас или о времени, которое отображается в этом месте, я бы хотел, чтобы этот текст отображался только по центру, а иногда и слева, как вы можете видеть на скриншотах выше.

хороший результат

Макет ListView:

<ListView
                    android:id="@+id/list"
                    android:layout_width="match_parent"
                    android:layout_height="fill_parent"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentRight="true"
                    android:layout_below="@+id/dialogTitle"
                    android:listSelector="@drawable/listitem_selector"
                    tools:listitem="@layout/item_customer_in_queue">
                </ListView>

Расположение предметов:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/item_in_queue_list"
              android:layout_width="match_parent"
              android:layout_height="@dimen/in_queue_item_height"
              android:minHeight="@dimen/in_queue_item_height"
              android:background="@color/bckg"
              android:orientation="vertical">

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

        <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="fill_parent">

            <ImageView.../>
            <ImageView.../>
            <ImageView.../>

        </RelativeLayout>
        <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="fill_parent">

            <ImageView.../>
            <ImageView.../>

        </RelativeLayout>

        <TextView.../>
        <TextView.../>
        <TextView.../>

        <LinearLayout                                 <=here my LinearLayout of my issue
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">
            <View
                    android:layout_width="fill_parent"
                    android:layout_height="20dp"
                    android:layout_weight="0.1"
                    android:layout_gravity="bottom"/>
            <TextView
                    android:id="@+id/list_dueTime"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"                 <=here my issue
                    android:text="due"
                    android:layout_weight="0.8"
                    android:textColor="@color/dark_grey"
                    android:textAppearance="?android:attr/textAppearanceSmall" />
         </LinearLayout>

    </LinearLayout>

    <ProgressBar.../>

</LinearLayout>

person AlexDG    schedule 05.12.2014    source источник
comment
ты можешь просто показать свою проблему??   -  person Ankit Kumar    schedule 05.12.2014
comment
layout_gravity="bottom" дочернего элемента не работает с родительским LinearLayout, имеющим orientation="vertical"   -  person Kaushik    schedule 05.12.2014
comment
вы пробовали layout_gravity = center ?   -  person Umair    schedule 05.12.2014
comment
@Ankit Kumar моя проблема в том, что вы можете видеть на снимках экрана, иногда текст выравнивается по центру где-то слева, и я хотел бы иметь только выравнивание по центру   -  person AlexDG    schedule 05.12.2014
comment
@Alex, можешь опубликовать скриншот желаемого layout   -  person Kaushik    schedule 05.12.2014
comment
если вы перечисляете элемент, содержащий только TextCiew, то почему вы берете другие RelativeLayout и TextView?   -  person Haresh Chhelana    schedule 05.12.2014


Ответы (3)


ПОПРОБУЙТЕ ЭТО: в этом случае я предоставил гравитацию родителю текстового представления и изменил ширину текстового представления, чтобы обернуть содержимое. . . . . .

 <LinearLayout                                
            android:layout_width="match_parent"
            android:layout_height="wrap_content" 
                android:gravity="center"  
            android:orientation="vertical"> 
        <View 
                android:layout_width="fill_parent" 
                android:layout_height="20dp" 
                android:layout_weight="0.1" 
                android:layout_gravity="bottom"/> 
        <TextView 
                android:id="@+id/list_dueTime" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content" 
                android:text="due" 
                android:layout_weight="0.8" 
                android:textColor="@color/dark_grey" 
                android:textAppearance="?android:attr/textAppearanceSmall" /> 
     </LinearLayout> 

. . . .

person Yoganand.N    schedule 05.12.2014

Когда вы говорите о выравнивании «по центру», центр определяется шириной представления. Чтобы облегчить отладку, вы можете добавить в представление цветной фон и увидеть его границы.

person Patrick Chan    schedule 05.12.2014

Создайте макет XML и вставьте приведенный ниже код

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dp" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="80dp"
    android:weightSum="1" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginRight="5dp"
        android:layout_weight="0.4"
        android:background="#f0f0f0" >

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_weight="0.6"
        android:background="#f0f0f0"
        android:layout_height="match_parent" >

        <TextView
            android:id="@+id/txt_now"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="5dp"
            android:textSize="18sp"
            android:text="Now" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="5dp"
            android:text="12 Mins Overdue"
            android:textAppearance="?android:attr/textAppearanceSmall" />

    </RelativeLayout>

</LinearLayout>

person Prashant Maheshwari Andro    schedule 10.12.2014