TextView 重力属性不起作用

Posted

技术标签:

【中文标题】TextView 重力属性不起作用【英文标题】:TextView gravity attribute doesn't work 【发布时间】:2015-02-03 14:31:52 【问题描述】:

我在 LinearLayout 中有一个 textView,它显示的文本并不总是在中心,即使我使用重力 =“center”属性。我还用“match_parent”设置了 layout_width。

此 textView 位于 LinearLayout 中,该 LinearLayout 位于视图的父 LinearLayout 中。

我的 textView 在 ListView 中,代表项目行的结尾。

我的适配器使用 ViewHolder 模式。

这里我真的不明白为什么有时文字居中而有时居左。

这是我的视图的 2 个屏幕截图,其中您可以看到对齐问题的不同状态:

我想要的: 这里只是关于文本现在或显示在此位置的时间,我想仅在中心显示此文本,有时它显示在左侧,如您在上面的屏幕截图中所见。

ListView 布局:

<ListView
                    android:id="@+id/list"
                    android:layout_
                    android:layout_
                    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_
              android:layout_
              android:minHeight="@dimen/in_queue_item_height"
              android:background="@color/bckg"
              android:orientation="vertical">

    <LinearLayout
            android:layout_
            android:layout_
            android:layout_weight="0.95">

        <RelativeLayout
                android:layout_
                android:layout_>

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

        </RelativeLayout>
        <RelativeLayout
                android:layout_
                android:layout_>

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

        </RelativeLayout>

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

        <LinearLayout                                 <=here my LinearLayout of my issue
                android:layout_
                android:layout_
                android:orientation="vertical">
            <View
                    android:layout_
                    android:layout_
                    android:layout_weight="0.1"
                    android:layout_gravity="bottom"/>
            <TextView
                    android:id="@+id/list_dueTime"
                    android:layout_
                    android:layout_
                    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>

【问题讨论】:

你能显示你的问题吗?? layout_gravity="bottom" of child 不能与具有 orientation="vertical" 的父 LinearLayout 一起使用 你试过 layout_gravity = "center" 吗? @Ankit Kumar 我的问题就像你可以在屏幕截图上看到的那样,有时文本在左侧某个时候居中对齐,我只想居中对齐 @Alex 你能发一张你想要的截图吗layout 【参考方案1】:

试试这个: 在这种情况下,我为文本视图的父级提供了重力,并更改了文本视图宽度以换行内容 . . . . . .

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

。 . . .

【讨论】:

【参考方案2】:

当您谈论对齐“中心”时,中心由视图的宽度决定。为了帮助您调试,您可以向 View 添加彩色背景并查看其边界。

【讨论】:

【参考方案3】:

制作布局xml并粘贴以下代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:padding="5dp" >

<LinearLayout
    android:layout_
    android:layout_
    android:weightSum="1" >

    <RelativeLayout
        android:layout_
        android:layout_
        android:layout_marginRight="5dp"
        android:layout_weight="0.4"
        android:background="#f0f0f0" >

    </RelativeLayout>

    <RelativeLayout
        android:layout_
        android:layout_weight="0.6"
        android:background="#f0f0f0"
        android:layout_ >

        <TextView
            android:id="@+id/txt_now"
            android:layout_
            android:layout_
            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_
            android:layout_
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="5dp"
            android:text="12 Mins Overdue"
            android:textAppearance="?android:attr/textAppearanceSmall" />

    </RelativeLayout>

</LinearLayout>

【讨论】:

以上是关于TextView 重力属性不起作用的主要内容,如果未能解决你的问题,请参考以下文章

TextView垂直重力在ScrollView中不起作用

RecyclerView 项目高度和重力不起作用

为啥我的脚本(旨在在游戏开始时消除重力)不起作用?

TabLayout tabItem tab重力中心不起作用

Android center_vertical 重力不起作用

重力形式总字段在 Wordpress 页面中不起作用