【问题标题】:Constraint layout always alinging to top left corner约束布局总是在左上角
【发布时间】:2020-05-29 06:25:16
【问题描述】:

我试图在三列中添加一些 EditText。但我得到的只是这个。如果不在设计编辑器中选择它们,您甚至无法看到它们。我尝试单独添加它们并设置约束,然后添加所有它们并设置约束。这些都没有帮助。我迷路了,我认为约束的布局应该很容易创建:/

所有东西都合并在一起,没有宽度和高度

无选择

这是约束布局:

androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/karta"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

        <EditText
                android:id="@+id/hpTmp"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="4dp"
                android:layout_marginTop="4dp"
                android:layout_marginEnd="4dp"
                android:enabled="true"
                android:focusable="false"
                android:hint="Tmp HP"
                android:inputType="text"
                android:singleLine="true"
                android:tag="staty"
                android:textSize="14sp"
                android:visibility="visible"
                app:layout_constraintEnd_toEndOf="@id/hpMax"
                app:layout_constraintStart_toEndOf="parent"
                app:layout_constraintTop_toTopOf="@id/Class" />

        <EditText
                android:id="@+id/hpMax"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="4dp"
                android:layout_marginTop="4dp"
                android:layout_marginEnd="4dp"
                android:enabled="true"
                android:focusable="false"
                android:hint="Max HP"
                android:inputType="text"
                android:singleLine="true"
                android:tag="staty"
                android:textSize="14sp"
                app:layout_constraintEnd_toEndOf="@id/hpNow"
                app:layout_constraintStart_toStartOf="@id/hpTmp"
                app:layout_constraintTop_toTopOf="@id/Race" />

        <EditText
                android:id="@+id/hpNow"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="4dp"
                android:layout_marginTop="4dp"
                android:layout_marginEnd="4dp"
                android:enabled="true"
                android:focusable="false"
                android:hint="Current HP"
                android:inputType="text"
                android:singleLine="true"
                android:tag="staty"
                android:textSize="14sp"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="@id/hpMax"
                app:layout_constraintTop_toTopOf="@id/Level" />

        <EditText
                android:id="@+id/Class"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="4dp"
                android:layout_marginTop="4dp"
                android:layout_marginEnd="4dp"
                android:enabled="true"
                android:focusable="false"
                android:hint="Klasa"
                android:inputType="text"
                android:singleLine="true"
                android:tag="staty"
                android:textSize="14sp"
                app:layout_constraintEnd_toEndOf="@id/Race"
                app:layout_constraintStart_toEndOf="parent"
                app:layout_constraintTop_toTopOf="@id/Alignment" />

        <EditText
                android:id="@+id/Race"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="4dp"
                android:layout_marginTop="4dp"
                android:layout_marginEnd="4dp"
                android:enabled="true"
                android:focusable="false"
                android:hint="Rasa"
                android:inputType="text"
                android:singleLine="true"
                android:tag="staty"
                android:textSize="14sp"
                app:layout_constraintEnd_toStartOf="@id/Level"
                app:layout_constraintStart_toEndOf="@id/Class"
                app:layout_constraintTop_toTopOf="@id/Proficiency" />

        <EditText
                android:id="@+id/Level"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="4dp"
                android:layout_marginTop="4dp"
                android:layout_marginEnd="4dp"
                android:enabled="true"
                android:focusable="false"
                android:hint="Poziom"
                android:inputType="text"
                android:singleLine="true"
                android:tag="staty"
                android:textSize="14sp"
                app:layout_constraintEnd_toStartOf="parent"
                app:layout_constraintStart_toStartOf="@id/Race"
                app:layout_constraintTop_toTopOf="@id/Background" />

        <EditText
                android:id="@+id/Alignment"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="4dp"
                android:layout_marginTop="4dp"
                android:layout_marginEnd="4dp"
                android:enabled="true"
                android:focusable="false"
                android:hint="Alignment"
                android:inputType="text"
                android:singleLine="true"
                android:tag="staty"
                android:textSize="14sp"
                app:layout_constraintEnd_toStartOf="@id/Proficiency"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

        <EditText
                android:id="@+id/Proficiency"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="4dp"
                android:layout_marginTop="4dp"
                android:layout_marginEnd="4dp"
                android:enabled="true"
                android:focusable="false"
                android:hint="Proficiency"
                android:inputType="text"
                android:singleLine="true"
                android:tag="staty"
                android:textSize="14sp"
                app:layout_constraintEnd_toStartOf="@id/Background"
                app:layout_constraintStart_toEndOf="@id/Alignment"
                app:layout_constraintTop_toTopOf="parent" />

        <EditText
                android:id="@+id/Background"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="4dp"
                android:layout_marginTop="4dp"
                android:layout_marginEnd="4dp"
                android:enabled="true"
                android:focusable="false"
                android:hint="Background"
                android:inputType="text"
                android:singleLine="true"
                android:tag="staty"
                android:textSize="14sp"
                app:layout_constraintEnd_toStartOf="parent"
                app:layout_constraintStart_toEndOf="@+id/Proficiency"
                app:layout_constraintTop_toTopOf="parent" />

    </androidx.constraintlayout.widget.ConstraintLayout>

【问题讨论】:

    标签: android android-constraintlayout


    【解决方案1】:

    将 android:layout_width="0dp" 更改为 android:layout_width="wrap_content" 或 android:layout_width="match_parent"

    【讨论】:

    • wrap_content 使它们可见,但仍然奇怪地显示它们,match_parent 不适用于约束布局
    【解决方案2】:

    我建议你更多地了解约束,你不是在安静地使用它

    app:layout_constraintStart_toEndOf="parent"
    

    您从您的 xml 代码中看到这一行,它只会将您的视图置于屏幕之外,而应该是 app:layout_constraintStart_toStartOf="parent"

    【讨论】:

    • 我只是用了LayoutEditor,没想到会出问题:/
    • @BartoszZiembański 我认为如果您编写自己的 xml 代码而不是依赖于 LayoutEditor,您可以更好地处理事情
    【解决方案3】:

    将您的 xml 代码更改为:

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/karta"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom">
    
        <EditText
            android:id="@+id/hpTmp"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="4dp"
            android:layout_marginTop="4dp"
            android:layout_marginEnd="4dp"
            android:enabled="true"
            android:focusable="false"
            android:hint="Tmp HP"
            android:inputType="text"
            android:singleLine="true"
            android:tag="staty"
            android:textSize="14sp"
            android:visibility="visible"
            app:layout_constraintEnd_toStartOf="@id/hpMax"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintBottom_toTopOf="@id/Class" />
    
        <EditText
            android:id="@+id/hpMax"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="4dp"
            android:layout_marginTop="4dp"
            android:layout_marginEnd="4dp"
            android:enabled="true"
            android:focusable="false"
            android:hint="Max HP"
            android:inputType="text"
            android:singleLine="true"
            android:tag="staty"
            android:textSize="14sp"
            app:layout_constraintEnd_toStartOf="@id/hpNow"
            app:layout_constraintStart_toEndOf="@id/hpTmp"
            app:layout_constraintBottom_toTopOf="@id/Race" />
    
        <EditText
            android:id="@+id/hpNow"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="4dp"
            android:layout_marginTop="4dp"
            android:layout_marginEnd="4dp"
            android:enabled="true"
            android:focusable="false"
            android:hint="Current HP"
            android:inputType="text"
            android:singleLine="true"
            android:tag="staty"
            android:textSize="14sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@id/hpMax"
            app:layout_constraintBottom_toTopOf="@id/Level" />
    
        <EditText
            android:id="@+id/Class"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="4dp"
            android:layout_marginTop="4dp"
            android:layout_marginEnd="4dp"
            android:enabled="true"
            android:focusable="false"
            android:hint="Klasa"
            android:inputType="text"
            android:singleLine="true"
            android:tag="staty"
            android:textSize="14sp"
            app:layout_constraintEnd_toStartOf="@id/Race"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintBottom_toTopOf="@id/Alignment" />
    
        <EditText
            android:id="@+id/Race"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="4dp"
            android:layout_marginTop="4dp"
            android:layout_marginEnd="4dp"
            android:enabled="true"
            android:focusable="false"
            android:hint="Rasa"
            android:inputType="text"
            android:singleLine="true"
            android:tag="staty"
            android:textSize="14sp"
            app:layout_constraintEnd_toStartOf="@id/Level"
            app:layout_constraintStart_toEndOf="@id/Class"
            app:layout_constraintBottom_toTopOf="@id/Proficiency" />
    
        <EditText
            android:id="@+id/Level"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="4dp"
            android:layout_marginTop="4dp"
            android:layout_marginEnd="4dp"
            android:enabled="true"
            android:focusable="false"
            android:hint="Poziom"
            android:inputType="text"
            android:singleLine="true"
            android:tag="staty"
            android:textSize="14sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@id/Race"
            app:layout_constraintBottom_toTopOf="@id/Background" />
    
        <EditText
            android:id="@+id/Alignment"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="4dp"
            android:layout_marginTop="4dp"
            android:layout_marginEnd="4dp"
            android:enabled="true"
            android:focusable="false"
            android:hint="Alignment"
            android:inputType="text"
            android:singleLine="true"
            android:tag="staty"
            android:textSize="14sp"
            app:layout_constraintEnd_toStartOf="@id/Proficiency"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintBottom_toBottomOf="parent" />
    
        <EditText
            android:id="@+id/Proficiency"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="4dp"
            android:layout_marginTop="4dp"
            android:layout_marginEnd="4dp"
            android:enabled="true"
            android:focusable="false"
            android:hint="Proficiency"
            android:inputType="text"
            android:singleLine="true"
            android:tag="staty"
            android:textSize="14sp"
            app:layout_constraintEnd_toStartOf="@id/Background"
            app:layout_constraintStart_toEndOf="@id/Alignment"
            app:layout_constraintBottom_toBottomOf="parent" />
    
        <EditText
            android:id="@+id/Background"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="4dp"
            android:layout_marginTop="4dp"
            android:layout_marginEnd="4dp"
            android:enabled="true"
            android:focusable="false"
            android:hint="Background"
            android:inputType="text"
            android:singleLine="true"
            android:tag="staty"
            android:textSize="14sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@+id/Proficiency"
            app:layout_constraintBottom_toBottomOf="parent" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    结果:

    将约束视为 A 的给定边缘附加/对齐到 B 的给定边缘。例如,app:layout_constraintStart_toEndOf 约束意味着 A 的起始边与 B 的结束边相连/对齐。

    在使用布局编辑器之前,最好先在 xml 中编写代码。这样,您就会知道它是如何工作的。

    【讨论】:

      【解决方案4】:

      对我来说,当我点击“强制刷新布局”时,它起作用了。您只需按“R”按钮即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-29
        • 2020-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-02
        • 1970-01-01
        相关资源
        最近更新 更多