当前位置: 首页 > 知识库问答 >
问题:

AndroidX.ConstraintLayout:ConstraintLayout:2.1.0中的ImageView布局错误

蒋默
2023-03-14

我使用Android Studio2020.3.1补丁3和ConstraintLayout来显示两行UI。

以下是预期的UI Latyout:

-------------------------------------------------------------------------
first_row_text_view  |   first_row_edit_text   |   first_row_image_view
-------------------------------------------------------------------------
second_row_text_view |   second_row_image_view |   second_row_switch
-------------------------------------------------------------------------
dependencies {
...
implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
...
}
<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <TextView
        android:id="@+id/first_row_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/first_row_edit_text"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintBaseline_toBaselineOf="@id/first_row_text_view"
        app:layout_constraintEnd_toStartOf="@id/first_row_image_view"
        app:layout_constraintStart_toEndOf="@id/barrier_left_right"
        app:layout_constraintTop_toTopOf="parent" />

    <ImageView
        android:id="@+id/first_row_image_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginHorizontal="16dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@id/first_row_edit_text"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/second_row_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/barrier_first_row" />

    <ImageView
        android:id="@+id/second_row_image_view"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintBaseline_toBaselineOf="@id/second_row_text_view"
        app:layout_constraintEnd_toStartOf="@id/second_row_switch"
        app:layout_constraintStart_toEndOf="@id/barrier_left_right"
        app:layout_constraintTop_toBottomOf="@id/barrier_first_row"/>

    <Switch
        android:id="@+id/second_row_switch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBaseline_toBaselineOf="@id/second_row_text_view"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@id/second_row_image_view"
        app:layout_constraintTop_toBottomOf="@id/barrier_first_row" />

    <androidx.constraintlayout.widget.Barrier
        android:id="@+id/barrier_left_right"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:barrierDirection="end"
        app:constraint_referenced_ids="first_row_text_view,second_row_text_view"
        tools:layout_editor_absoluteX="410dp"
        tools:layout_editor_absoluteY="1dp" />

    <androidx.constraintlayout.widget.Barrier
        android:id="@+id/barrier_first_row"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:barrierDirection="bottom"
        app:constraint_referenced_ids="first_row_text_view,first_row_edit_text,first_row_image_view" />

</androidx.constraintlayout.widget.ConstraintLayout>
<EditText
    android:id="@+id/second_row_image_view"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    app:layout_constraintBaseline_toBaselineOf="@id/second_row_text_view"
    app:layout_constraintEnd_toStartOf="@id/second_row_switch"
    app:layout_constraintStart_toEndOf="@id/barrier_left_right"
    app:layout_constraintTop_toBottomOf="@id/barrier_first_row"/>

您可以将test.xml复制到res/layout,在“code”视图中打开test.xml,然后单击“second_row_image_view”,最后切换到“design”视图,您还可以发现second_row_image_view浮动在first_row_edit_text的顶部。

共有1个答案

欧阳乐生
2023-03-14

这是因为app:layout_constraintbaseline_tobaselineof。基线是基于文本的视图的属性。ImageViews没有基线,而EditTexts有

 类似资料:
  • 想改进这个问题吗?更新问题,使其仅通过编辑这篇文章来关注一个问题。 我创建了一个Android应用程序,我想把ImageView放在ImageView之上。 如何使我成为可能。 谢谢。

  • ![我已经以线性布局(下面给出的代码)对其进行了编码,但想知道如何使用相对布局进行相同的操作,或者这只是一个考虑到布局的坏主意? 线性布局 - ][1] 使用相对布局时,我的ImageView不会显示在屏幕上:

  • 嘿我真的需要你的帮助。 我的问题是Android Studio不会在仿真器或物理设备中正确显示布局。每当我放置一个textView、button等,并且我想要将它居中(水平、垂直或两者),并且我启动仿真器时,它就会被贴在左上角。 这是我的代码:: 在showHint方法中,一切工作都很好。按钮和imageview就在我设置的地方。 但是在firstStage方法中,我有一个textView,如果我

  • 我知道线性布局中的布局权重。我可以在相对布局中分配布局权重吗? 示例:布局中的两个图像视图以60:40的比例填充布局。第一个图像应占据整个屏幕高度的60%,第二个图像必须占据剩余的40%屏幕。 不要只是回答这个例子的问题,请告诉我准确的概念,或者张贴一些关于相对布局中布局权重的参考链接。提前感谢。

  • 问题内容: 我是Android开发的新手,已经开始创建自己的UI。我看到您可以动态创建它,如下所示(Dynamic Layouts ): 但我也看到netbeans有一个文件 Resources- > layout-> main.xml 。因此,您可以为UI创建XML布局(声明XML布局): 所以我的问题是应该使用哪个?在Android开发中,对动态布局和XML布局有何建议和优缺点? 问题答案:

  • 有什么建议为什么我会在layout_behavior上出现这个错误,以及如何修复它?