代码之家  ›  专栏  ›  技术社区  ›  Christian

为什么我的ConstraintLayout链无法构建?

  •  0
  • Christian  · 技术社区  · 6 年前

    根据XML编辑器,我的布局应该如下所示: enter image description here

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

    enter image description here

    我不明白为什么链功能在这种情况下不起作用。对于这个实例,我该如何修复它,以及如何掌握如何正确构建链?

    <?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>
    
    3 回复  |  直到 6 年前
        1
  •  1
  •   Ben P.    6 年前

    从技术上讲,你发布的不是一条“链”。当多个视图具有 二者都 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"/>
    

    这使得依赖关系非常清晰,所有内容都会根据需要滑到视图的末尾。

        2
  •  1
  •   Ves    6 年前

    在我的设计器中,这个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"
    
        3
  •  1
  •   igor_rb    6 年前

    更改第一个图像按钮如下:

    <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" 在链的第一个元素中。

    升级版本: https://developer.android.com/training/constraint-layout/

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

    推荐文章