Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何根据文本视图的长度对齐文本视图_Java_Android_Layout_Textview - Fatal编程技术网

Java 如何根据文本视图的长度对齐文本视图

Java 如何根据文本视图的长度对齐文本视图,java,android,layout,textview,Java,Android,Layout,Textview,我有一个界面,其中有两个ImageButton和一个TextView。TextView包含一个数字,两个ImageButtons控制该数字,添加或删除1。 问题是当数字变成两位数时:文本视图宽度增加,两个图像按钮中的一个移动 正如您可以看到的,当数字是一位数字时,没有任何类型的问题,但当它变成两位数字时,ImageButton会从他的位置移动。我已经试过使用android:layou-gravity和android:gravity,但它们都不起作用。有一种方法可以保持文本视图“居中”,并确保

我有一个界面,其中有两个ImageButton和一个TextView。TextView包含一个数字,两个ImageButtons控制该数字,添加或删除1。 问题是当数字变成两位数时:文本视图宽度增加,两个图像按钮中的一个移动

正如您可以看到的,当数字是一位数字时,没有任何类型的问题,但当它变成两位数字时,ImageButton会从他的位置移动。我已经试过使用
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的大小,它可以工作。非常感谢你!