如何在具有多个 TextView 的相对布局中保持 TextView 居中对齐
How to keep a TextView center aligned within a RelativeLayout with mutliple TextViews
我有这个 RelativeLayout
有两个 TextView
,一个 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 不仅居中对齐,而且在遇到counter text view的时候还需要裁剪,如果text length比较大
正如我在上面的评论中提到的,使用宽度 matchparent
、方向 horizontal
的 LinearLayout
。
内部线性布局采用 2 个文本视图,第一个 TextView
宽度 0dp 和权重 1,第二个 TextView
宽度包裹内容
<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"
尽管如此,您可能需要尝试使用椭圆大小设置。
试试这个让我知道,
<?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>
如果你愿意,那么删除你的相对布局的填充并添加填充到title_text文本视图
<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>
更新 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"
试试这个:-
<?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>
Try this:-
Add android:layout_toStartOf="@+id/title_count_text" and android:maxLines="2" to the TextView with id "@+id/title_text". It worked for me.
<?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>
我有这个 RelativeLayout
有两个 TextView
,一个 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 不仅居中对齐,而且在遇到counter text view的时候还需要裁剪,如果text length比较大
正如我在上面的评论中提到的,使用宽度 matchparent
、方向 horizontal
的 LinearLayout
。
内部线性布局采用 2 个文本视图,第一个 TextView
宽度 0dp 和权重 1,第二个 TextView
宽度包裹内容
<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"
尽管如此,您可能需要尝试使用椭圆大小设置。
试试这个让我知道,
<?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>
如果你愿意,那么删除你的相对布局的填充并添加填充到title_text文本视图
<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>
更新 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"
试试这个:-
<?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>
Try this:-
Add android:layout_toStartOf="@+id/title_count_text" and android:maxLines="2" to the TextView with id "@+id/title_text". It worked for me.
<?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>