如何使用多个TextViews使TextView中心在RelativeLayout中保持对齐

时间:2017-09-27 04:49:39

标签: android android-layout textview android-relativelayout layout-gravity

我有RelativeLayoutTextView个,center对齐,另一个end对齐,

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="60dp"
                android:layout_marginEnd="@dimen/size_10dp"
                android:layout_marginStart="@dimen/size_10dp">

                <TextView
                    android:id="@+id/title_count_text"
                    fontPath="fonts/title_bold.ttf"
                    android:layout_width="wrap_content"
                    android:layout_height="60dp"
                    android:layout_alignParentEnd="true"
                    android:layout_gravity="center"
                    android:background="@color/background"
                    android:ellipsize="end"
                    android:gravity="center|center_vertical"
                    android:maxLines="1"
                    android:text="(0)"
                    android:paddingLeft="@dimen/size_5dp"
                    android:paddingStart="@dimen/size_5dp"
                    android:textColor="@color/textColorGrey"
                    android:textSize="@dimen/size_18dp"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/title_text"
                    fontPath="fonts/title_bold.ttf"
                    android:layout_width="wrap_content"
                    android:layout_height="60dp"
                    android:layout_centerInParent="true"
                    android:layout_gravity="center"
                    android:ellipsize="end"
                    android:gravity="center"
                    android:maxLines="1"
                    android:text="This is a Sample Test"
                    android:textAlignment="center"
                    android:textColor="@color/textColorGrey"
                    android:textSize="@dimen/size_18dp"
                    android:textStyle="bold" />

            </RelativeLayout> 

看起来像这样,请找到下面的图片,

它的工作正常,文字长度很短,但是如果我增加文字长度,它会与计数器文本重叠,显然title_text会在title_count_text之后呈现,

但是,如果我将android:layout_toLeftOf="@+id/title_count_text"属性添加到title_text并更改宽度以匹配父级,则使此TextView中心对齐。 title_text将失去中心引力。

看起来像这样,请找到下面的第二个附件

虽然它可能不可见,但是它现在向右移动计数器文字的宽度,

我想要实现的是保留title_text的中心对齐方式,当文本长度更大并且到达计数器文本视图的开头时,它应该剪切文本并附加...到最后,

任何形式的帮助都将完全受到赞赏,

由于

TL:DR不仅中心对齐,还需要在遇到计数器文本视图时剪切,如果文本长度更长。

8 个答案:

答案 0 :(得分:1)

<TextView
                android:id="@+id/title_text"
                android:layout_toLeftOf="@+id/title_count_text"
                android:layout_alignParentLeft="true"
                fontPath="fonts/title_bold.ttf"
                android:layout_width="wrap_content"
                android:layout_height="60dp"
                android:layout_centerInParent="true"
                android:layout_gravity="center"
                android:ellipsize="end"
                android:gravity="center"
                android:maxLines="1"
                android:text="This is a Sample Test"
                android:textAlignment="center"
                android:textColor="@color/textColorGrey"
                android:textSize="@dimen/size_18dp"
                android:textStyle="bold" />

我在您的第二个文字视图中添加了以下两行,以获得您描述的行为:

android:layout_toLeftOf="@+id/title_count_text"
android:layout_alignParentLeft="true"

您可能需要使用ellipsize设置。

答案 1 :(得分:1)

如果您愿意,删除相对布局的填充,并将填充添加到 title_text Textview

 <RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="60dp"
    >

    <TextView
        android:id="@+id/title_count_text"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:layout_alignParentEnd="true"
        android:layout_gravity="center"
        android:ellipsize="end"
        android:gravity="center|center_vertical"
        android:maxLines="1"
        android:text="(0)"
        android:paddingLeft="@dimen/size_5dp"
        android:paddingStart="@dimen/size_5dp"
        android:textColor="@color/textColorGrey"
        android:textSize="@dimen/size_18dp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/title_text"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:padding="16dp"
        android:layout_centerInParent="true"
        android:layout_gravity="center"
        android:ellipsize="end"
        android:gravity="center"
        android:maxLines="1"
        android:text="This is a Sample Test wehatb the  are u dongibng wjkl"
        android:textAlignment="center"
        android:textColor="@color/textColorGrey"
        android:textSize="@dimen/size_18dp"
        android:textStyle="bold" />

</RelativeLayout>

答案 2 :(得分:0)

正如我在上面的评论中所提到的,使用宽度为LinearLayout的{​​{1}},方向matchparent。 内部线性布局采用2个文本视图,第1 horizontal宽度0dp和权重1,第2 TextView宽度包装内容

答案 3 :(得分:0)

更新title_text如下:

               <TextView
                android:id="@+id/title_text"
                fontPath="fonts/title_bold.ttf"
                android:layout_width="match_parent"
                android:layout_toLeftOf="@+id/title_count_text"
                android:ellipsize="end"
                android:layout_height="60dp"
                android:gravity="center"
                android:maxLines="1"
                android:text="This is a Sample Test"
                android:textColor="@color/textColorGrey"
                android:textSize="@dimen/size_18dp"
                android:textStyle="bold" />

以下3个属性是主要添加的:

                    android:layout_width="match_parent"
                    android:layout_toLeftOf="@+id/title_count_text"
                    android:ellipsize="end"

另外,删除:

                android:layout_centerInParent="true"
                android:layout_gravity="center"

答案 4 :(得分:0)

试试这个: -

<?xml version="1.0" encoding="utf-8"?>

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_marginEnd="@dimen/size_10dp"
        android:layout_marginStart="@dimen/size_10dp">

        <TextView
            android:id="@+id/title_count_text"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:background="@color/background"
            android:textAlignment="center"
            android:ellipsize="end"
            android:maxLines="1"
            android:gravity="center"
            android:text="(0)"
            android:paddingLeft="@dimen/size_5dp"
            android:paddingStart="@dimen/size_5dp"
            android:textColor="@color/textColorGrey"
            android:textSize="@dimen/size_18dp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/title_text"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:ellipsize="end"
            android:layout_gravity="end"
            android:maxLines="1"
            android:gravity="center"
            android:text="This is a Sample Test"
            android:textAlignment="center"
            android:textColor="@color/textColorGrey"
            android:textSize="@dimen/size_18dp"
            android:textStyle="bold" />
    </LinearLayout>
</LinearLayout>

答案 5 :(得分:-1)

试试这个让我知道,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:background="#ff0000"
    android:weightSum="1"
    >
    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.8"
        android:text="test"
        android:gravity="center"/>

    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.2"
        android:text="0"
        android:gravity="center"/>

</LinearLayout>

答案 6 :(得分:-1)

您想要关注输出正确?:

enter image description here

以下是适用于我的代码

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="60dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:weightSum="1">

        <TextView
            android:id="@+id/title_text"
            android:layout_width="0dp"
            android:layout_height="60dp"
            android:layout_gravity="center"
            android:layout_margin="5dp"
            android:layout_weight="0.9"
            android:ellipsize="end"
            android:gravity="center"
            android:maxLines="1"
            android:text="This is a Sample Test This is a Sample Test This is a Sample Test"
            android:textAlignment="center"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/title_count_text"
            android:layout_width="0dp"
            android:layout_height="60dp"
            android:layout_gravity="center"
            android:layout_weight="0.1"
            android:ellipsize="end"
            android:gravity="center|center_vertical"
            android:maxLines="1"
            android:text="(0)"
            android:textStyle="bold" />

    </LinearLayout>

</RelativeLayout>

试试吧!

答案 7 :(得分:-1)

  

试试这个: -

     

将android:layout_toStartOf =“@ + id / title_count_text”和android:maxLines =“2”添加到带有“@ + id / title_text”的TextView。它对我有用。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_marginEnd="@dimen/dp10"
android:layout_marginStart="@dimen/dp10">

<TextView
    android:id="@+id/title_count_text"
    android:layout_width="wrap_content"
    android:layout_height="60dp"
    android:layout_alignParentEnd="true"
    android:ellipsize="end"
    android:gravity="center|center_vertical"
    android:maxLines="1"
    android:paddingLeft="@dimen/dp5"
    android:paddingStart="@dimen/dp5"
    android:text="(0)"
    android:textSize="@dimen/dp18"
    android:textStyle="bold" />

<TextView
    android:id="@+id/title_text"
    android:layout_width="wrap_content"
    android:layout_height="60dp"
    android:layout_gravity="center"
    android:layout_toStartOf="@+id/title_count_text"
    android:gravity="center"
    android:maxLines="2"
    android:text="This is a Sample Test This is a Sample Test This is a Sample Test This is a Sample Test"
    android:textAlignment="center"
    android:textSize="@dimen/dp18" />

</RelativeLayout>