我有一个如图所示的布局,没有红线。 如您所见,左侧的纯文本输入字段未对齐。 更糟糕的是,他们根据字幕长度对不同的语言进行不同的定位。 我怎样才能让它们从相同的偏移量开始? 附注。 我需要它至少在 Android Jelly Bean 4.3.x API 级别 18 上工作。

在此处输入图片说明 我相关的layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scrollbars="vertical">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:context=".WriteTagNumberActivity">

        <LinearLayout
            android:id="@+id/linearLayout13"
            android:layout_width="wrap_content"

            android:layout_height="wrap_content"
            android:layout_marginStart="24dp"
            android:layout_marginLeft="24dp"
            android:layout_marginTop="24dp"
            android:layout_marginEnd="24dp"
            android:layout_marginRight="24dp"
            android:orientation="horizontal"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">

            <CheckBox
                android:id="@+id/checkBox"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="12dp"
                android:layout_marginRight="12dp"
                android:layout_weight="1"
                android:freezesText="true"
                android:text="@string/autoincrement"
                app:layout_constraintBaseline_toBaselineOf="@+id/editText2"
                app:layout_constraintStart_toStartOf="parent" />

            <EditText
                android:id="@+id/editText2"
                android:layout_width="112dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="12dp"
                android:layout_marginLeft="12dp"
                android:layout_weight="1"
                android:ems="10"
                android:freezesText="true"
                android:gravity="center"
                android:hint="@string/write_tag_number_number"
                android:importantForAutofill="no"
                android:inputType="number"
                android:numeric="integer"
                android:selectAllOnFocus="false"
                android:singleLine="true"
                app:layout_constraintStart_toEndOf="@+id/checkBox"
                app:layout_constraintTop_toTopOf="parent" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/linearLayout12"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="24dp"
            android:layout_marginLeft="24dp"
            android:layout_marginTop="8dp"
            android:layout_marginEnd="24dp"
            android:layout_marginRight="24dp"
            android:orientation="horizontal"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/linearLayout13">

            <TextView
                android:id="@+id/textView15"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="12dp"
                android:layout_marginRight="12dp"
                android:layout_weight="1"
                android:gravity="center"
                android:text="@string/team_name" />

            <EditText
                android:id="@+id/editText9"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="12dp"
                android:layout_marginLeft="12dp"
                android:layout_weight="1"
                android:ems="10"
                android:freezesText="true"
                android:gravity="center"
                android:importantForAutofill="no"
                android:inputType="textPersonName" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/linearLayout14"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="24dp"
            android:layout_marginLeft="24dp"
            android:layout_marginTop="8dp"
            android:layout_marginEnd="24dp"
            android:layout_marginRight="24dp"
            android:orientation="horizontal"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/linearLayout12">

            <TextView
                android:id="@+id/textView17"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="12dp"
                android:layout_marginRight="12dp"
                android:layout_weight="1"
                android:gravity="center"
                android:text="@string/group_name" />

            <AutoCompleteTextView
                android:id="@+id/editText14"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="12dp"
                android:layout_marginLeft="12dp"
                android:layout_weight="1"
                android:ems="10"
                android:freezesText="true"
                android:gravity="center"
                android:hint=" "
                android:importantForAutofill="no"
                android:inputType="textPersonName" />
        </LinearLayout>

    </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

#1楼 票数:1 已采纳

不要在 ConstraintLayout 中使用 LinearLayout,而是尝试使用链接和屏障。 您应该始终避免在 ConstraintLayout 中使用嵌套布局,因为它违背了 ConstraintLayout 引入的平面层次结构的目的( https://android-developers.googleblog.com/2017/08/understanding-performance-benefits-of.html

https://riggaroo.co.za/constraintlayout-guidelines-barriers-chains-groups/

https://constraintlayout.com/basics/barriers.html

  ask by Pavel Yudaev translate from so

未解决问题?本站智能推荐:

5回复

如何在Android中的Button上垂直居中drawableTop和文本?

我将Button定义如下: 问题是'drawableTop'图像与Button视图的顶部边框对齐。 我想将它(与文本标签一起)垂直放在按钮上。 'android:gravity'似乎只适用于文本标签。 它不会影响'drawableTop'定位。 我能够使用'android:pad
2回复

均匀地水平排列android

您好,我找到了很多关于如何最终水平放置按钮的链接,而我希望垂直放置按钮,以便它们均匀分布,而不是所有人都想要: 正在: 这是我的代码:
1回复

如何在XML的垂直内部实现水平方向

我有一个用于膨胀列表视图的布局文件。 因此,我想更改LinearLayout中TextView的显示方式。 当前,显示文本“ localhost”的Textview与其他两个显示ip地址和mac地址的TextView处于水平方向。 带有ip add和mac的TextView彼此垂直。 请
1回复

如何在移动屏幕上水平和垂直居中Framelayout

我在Linearlayout中使用Framelayout.Frmelayout包含两个imageview。 我希望将整个framelayout居中。 我可以将Framlyout内的子项与属性gravity:center对齐。 但是问题是,当我使用它时,两个图像视图都居中对齐,但是我希望第二
2回复

在网格布局中垂直和水平缩放图像

我是Android开发的新手,我正在尝试使用GridLayout创建具有3列的行,每列具有一个imageview。 在这种情况下,我使用的是在Photoshop中创建的正方形图像,全部为红色,仅用于测试。 这是我当前使用的xml: 上面的xml给出如下结果: 如您所见,我得到了
3回复

android水平和垂直布局在一个文件中

我知道提供垂直和水平布局的默认方法是创建两个xml文件,一个在布局中,第二个在layout-land目录中。 然而,当我有一个非常大的布局,其中只有非常小的部分将取决于方向时,我宁愿避免创建两个文件,因为它们很难保持同步(例如,我将改变一个中的东西,并且将忘记改变第二个)。 我想知道是否
1回复

android-垂直和水平居中放置两个下方并排按钮的文本

我有一个观点。 我希望图像徽标出现在布局的左上角和布局的中心(水平和垂直)中,我希望文本下方有2个按钮(并排)。 这是我所拥有的,它不起作用...有什么帮助吗?
1回复

Textview水平和垂直滚动

我想要一个水平和垂直滚动的文本字段。 屏幕底部是一个按钮。 到目前为止它有效,但 textview 高度仅与内容相同。 有没有办法产生父元素(滚动条)的高度? 目标是滚动条位于按钮的底部顶部(match_parent)。 所以我可以使用“整个”屏幕进行滚动。