【发布时间】:2020-12-31 14:21:36
【问题描述】:
我将ListView 项目创建为Constraint Layout。它有一个ImageView 被约束到父级(顶部和开始)和一个LinearLayout 被约束到这个ImageView(从顶部到顶部,从开始到结束,从底部到底部)。在 Java 部分,我做了一些逻辑,在某些情况下ImageView 已消失,而在其他情况下它将是可见的。这部分没有任何问题。布局是这样的:
还有这样的代码:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:paddingHorizontal="@dimen/activity_horizontal_margin"
android:paddingVertical="@dimen/activity_vertical_margin">
<ImageView
android:id="@+id/image"
android:layout_width="50dp"
android:layout_height="50dp"
android:contentDescription="@string/list_image_cd"
android:src="@drawable/app_logo"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:id="@+id/texts"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginLeft="24dp"
android:orientation="vertical"
app:layout_constraintStart_toEndOf="@id/image"
app:layout_constraintTop_toTopOf="@id/image"
app:layout_constraintBottom_toBottomOf="@id/image">
<TextView
android:id="@+id/miwok_word"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="miwok" />
<TextView
android:id="@+id/english_word"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="english" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
我可以通过将布局更改为LinearLayout 来解决此问题。但是在Constraint Layout 中,当ImageView 消失时,textview 中的一个消失了,另一个仍然存在。我读过类似的 ConstraintLayout, when constraint dependent view is gone, the layout view behave weirdly 。但是在我的情况下,如果这是线性布局的子视图,为什么其中一个文本视图仍然存在(为什么所有线性布局都没有消失?)。
【问题讨论】:
-
现在我发现了错误。去除线性布局的顶部和底部约束后,它起作用了。我认为当 ImageView 消失时,LinearLayout 有点超出,所以在布局中看不到上面的 textview。但我仍然无法清楚地了解
标签: android android-layout android-linearlayout android-constraintlayout