0

根据 XML 编辑器,我的布局应如下所示: 在此处输入图像描述

但在应用程序中它呈现为:

在此处输入图像描述

我不明白为什么在这种情况下链功能不起作用。在这种情况下,我该如何修复它?我通常如何才能掌握如何正确构建链条?

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    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="match_parent"
    android:layout_height="match_parent">


    <ImageButton
        android:id="@+id/verfügungButton"
        android:layout_width="@dimen/icon_size"
        android:layout_height="@dimen/icon_size"
        android:layout_marginStart="8dp"
        android:scaleType="fitCenter"
        android:src="@drawable/icons8_home_50"

        app:layout_constraintEnd_toStartOf="@+id/ramhat" />


    <ImageButton
        android:id="@+id/ramhat"

        android:layout_width="@dimen/icon_size"
        android:layout_height="@dimen/icon_size"

        android:scaleType="fitCenter"
        android:src="@drawable/icons8_settings_50"

        app:layout_constraintEnd_toStartOf="@+id/kuerzel"
        app:layout_constraintStart_toEndOf="@id/verfügungButton"
        />


    <TextView
        android:id="@+id/kuerzel"
        android:layout_width="@dimen/icon_size"
        android:layout_height="@dimen/icon_size"
        android:layout_marginStart="8dp"

        android:text="Text2"

        app:layout_constraintEnd_toStartOf="@+id/rubrik"
        app:layout_constraintStart_toEndOf="@id/ramhat" />


    <TextView
        android:id="@+id/rubrik"
        android:layout_width="@dimen/icon_size"
        android:layout_height="@dimen/icon_size"
        android:layout_gravity="center_vertical"
        android:layout_marginStart="8dp"
        android:text="Text1"

        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@id/kuerzel" />
</android.support.constraint.ConstraintLayout>
4

3 回答 3

1

在我的设计器中,这个 xml 看起来与您在应用程序运行时显示的完全一样。

为了得到你在我改变它之后的布局(大部分 xml 被删除):

    android:id="@+id/kuerzel"
    android:text="Text1"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent" 

    android:id="@+id/kuerzel"
    android:text="Text2"
    app:layout_constraintEnd_toStartOf="@+id/rubrik" 

    android:id="@+id/ramhat"
    app:layout_constraintEnd_toStartOf="@+id/kuerzel"

    android:id="@+id/verfügungButton"
    app:layout_constraintEnd_toStartOf="@+id/ramhat"
于 2018-10-10T15:03:03.030 回答
1

像这样更改第一个 ImageButton:

<ImageButton
    android:id="@+id/verfügungButton"
    android:layout_width="@dimen/icon_size"
    android:layout_height="@dimen/icon_size"
    android:layout_marginStart="8dp"
    android:scaleType="fitCenter"
    android:src="@drawable/icons8_home_50"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toStartOf="@+id/ramhat" />

你输app:layout_constraintStart_toStartOf="parent"在链的第一个元素。

UPD:在此处查看更多信息:https ://developer.android.com/training/constraint-layout/

只有当链的每一端都被约束到同一轴上的另一个对象时,链才能正常工作,如图 14 所示。

于 2018-10-10T14:58:27.153 回答
1

从技术上讲,您发布的内容不是“链”。当多个视图同时具有开始和结束约束时,就会形成一个链并且所有视图都相互链接(或链接到另一个视图/链末端的父视图)。因为你的第一个ImageButton只有一个结束约束,所以这不是一个链。

当然,这完全没问题。无论如何,您可能甚至都不想要链条,因为您希望所有内容都滑到父项的末尾。

但考虑到这一点,这意味着我们可以改变您现有的限制。删除所有app:layout_constraintStart_toEndOf约束:

<ImageButton
    android:id="@+id/verfügungButton"
    app:layout_constraintEnd_toStartOf="@+id/ramhat"/>

<ImageButton
    android:id="@+id/ramhat"
    app:layout_constraintEnd_toStartOf="@+id/kuerzel"/>

<TextView
    android:id="@+id/kuerzel"
    app:layout_constraintEnd_toStartOf="@+id/rubrik"/>

<TextView
    android:id="@+id/rubrik"
    app:layout_constraintEnd_toEndOf="parent"/>

这使得依赖关系一目了然,并且一切都根据需要滑到视图的末尾。

于 2018-10-10T15:10:29.077 回答