Java 如何根据文本视图的长度对齐文本视图
我有一个界面,其中有两个ImageButton和一个TextView。TextView包含一个数字,两个ImageButtons控制该数字,添加或删除1。 问题是当数字变成两位数时:文本视图宽度增加,两个图像按钮中的一个移动 正如您可以看到的,当数字是一位数字时,没有任何类型的问题,但当它变成两位数字时,ImageButton会从他的位置移动。我已经试过使用Java 如何根据文本视图的长度对齐文本视图,java,android,layout,textview,Java,Android,Layout,Textview,我有一个界面,其中有两个ImageButton和一个TextView。TextView包含一个数字,两个ImageButtons控制该数字,添加或删除1。 问题是当数字变成两位数时:文本视图宽度增加,两个图像按钮中的一个移动 正如您可以看到的,当数字是一位数字时,没有任何类型的问题,但当它变成两位数字时,ImageButton会从他的位置移动。我已经试过使用android:layou-gravity和android:gravity,但它们都不起作用。有一种方法可以保持文本视图“居中”,并确保
android:layou-gravity
和android:gravity
,但它们都不起作用。有一种方法可以保持文本视图“居中”,并确保ImageButton不移动
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:autofit="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="5dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical"
android:orientation="vertical">
<TextView
android:id="@+id/foodName"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginEnd="10dp"
android:gravity="center_vertical"
android:hint="food_name"
android:maxLines="2"
android:textAllCaps="false"
android:textColor="@android:color/black"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:gravity="end"
android:orientation="horizontal"
android:padding="5dp">
<ImageButton
android:id="@+id/addFood"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
app:srcCompat="@drawable/ic_add_black_40dp" />
<TextView
android:id="@+id/foodQuantity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|center_horizontal"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:gravity="center|center_horizontal"
android:maxLength="2"
android:text="0"
android:textColor="#707070"
android:textSize="20sp"
android:textStyle="bold" />
<ImageButton
android:id="@+id/removeFood"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
app:srcCompat="@drawable/ic_remove_black_40dp" />
</LinearLayout>
</LinearLayout>
这是我的代码,这是RecyclerView成员的布局,因为我创建了一个个性化元素。
非常感谢。我建议您使用
android:layout\u weight
以便在必要时定义哪个元素填充剩余空间。因此,当将TextView的布局权重设置为1,将ImageButtons的布局权重设置为0时,您可以随后将定义TextView内部重力的TextView的android:gravity
设置为center
,并且始终居中
但是:您需要将
线性布局的宽度设置为匹配父项
,以便填充父项。如果没有这一点,LinearLayout
将永远无法获得一些剩余空间,因为它总是缩小到所有元素都需要的大小我建议您使用android:layout\u weight
,以便在必要时定义填充剩余空间的元素。因此,当将TextView的布局权重设置为1,将ImageButtons的布局权重设置为0时,您可以随后将定义TextView内部重力的TextView的android:gravity
设置为center
,并且始终居中
但是:您需要将线性布局的宽度设置为匹配父项
,以便填充父项。没有这一点,LinearLayout
就永远不会有剩余的空间,因为它总是缩小到所有元素都需要的大小因为在foodQuantity
TextView上有wrap\u内容
,addFood
将移动以适应添加多个数字所需的额外空间。如果您想保持按钮的位置固定,并确保按钮不移动,则必须为文本视图
提供固定宽度,以容纳所需的最大字符数。因为食品数量
文本视图上有包装内容
,addFood
将移动以适应添加多个数字所需的额外间距。如果要保持按钮的位置固定,并确保按钮不移动,则必须为TextView
提供固定的宽度,以容纳所需的最大字符数。。。。
...
。。。
...
你说的是包含ImageButtons和textView的布局吗?所以我尝试了你的建议,如果我将linearLayout width设置为match\u parent
,它会覆盖所有空间。你说的是包含ImageButtons和textView的布局吗?所以我尝试了你的建议,如果我将linearLayout width设置为match\u parent
它覆盖了所有空间。我不明白这是什么。如果你尝试使用此代码,你可以理解。代码给出的图像与您发布的图像相同(左一)。如果你愿意,你可以写3或4位数字。你的图像不会移动。我不明白这是什么。如果你尝试使用此代码,你可以理解。代码给出的图像与您发布的图像相同(左一)。如果你愿意,你可以写3或4位数字。你的图像不会移动。好的,我明白了。所以我需要在dp中为textView设置一个固定的维度?是的。不要使用wrap\u content
为foodQuantity
指定一个固定宽度60dp
,或者根据您将支持的最大位数,选择您认为最适合您设计的宽度。好的,但是我是否需要调整它以适应不同类型的屏幕?不需要。您的foodName
TextView宽度将根据设备宽度改变其宽度,因此在这种情况下无需担心不同的屏幕大小。好的,我设置了25 dp的大小,它可以工作。非常感谢你!好的,我明白了。所以我需要在dp中为textView设置一个固定的维度?是的。不要使用wrap\u content
为foodQuantity
指定一个固定宽度60dp
,或者根据您将支持的最大位数,选择您认为最适合您设计的宽度。好的,但是我是否需要调整它以适应不同类型的屏幕?不需要。您的foodName
TextView宽度将根据设备宽度改变其宽度,因此在这种情况下无需担心不同的屏幕大小。好的,我设置了25 dp的大小,它可以工作。非常感谢你!