将ConstraintLayout
的{{1}}与Placeholder
的宽度和高度一起使用时,如果将内容设置为占位符本身,则它将在屏幕上占据正确的空间,如下例所示:
wrap_content
但是,当未设置任何内容时,它将占用一堆空间(整个区域),而不是宽度/高度为0dp。下面的示例演示:
<?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"
android:background="#999999">
<View
android:id="@+id/view_1"
android:layout_width="0dp"
android:layout_height="56dp"
android:background="#990000"
app:layout_constraintEnd_toStartOf="@+id/action_placeholder_view"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.Placeholder
android:id="@+id/action_placeholder_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:content="@+id/button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="56dp"
android:text="Button"
android:visibility="gone"
tools:ignore="MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout>
是某种<?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"
android:background="#999999">
<View
android:id="@+id/view_1"
android:layout_width="0dp"
android:layout_height="56dp"
android:background="#990000"
app:layout_constraintEnd_toStartOf="@+id/action_placeholder_view"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.Placeholder
android:id="@+id/action_placeholder_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="56dp"
android:text="Button"
android:visibility="gone"
tools:ignore="MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout>
错误还是我做错了什么?
上下文:我只想在页面完全加载后设置占位符的内容。
我使用的ConstraintLayout
版本是:
实现'androidx.constraintlayout:constraintlayout: 1.1.3 '
答案 0 :(得分:0)
您需要制作一条适当的水平链,以便var shortReviews = [];
var elm = document.getElementsByClassName('reviewContainer');
for (var i = 0; i < elm.length; i++) {
shortReviews.push(elm[i].innerHTML);
}
var snappy = document.querySelector("#reviewsSnap").innerHTML = shortReviews.slice(0, 2);
snappy.join('');
知道ConstraintLayout
应该对齐的位置,以防它受到约束的视图消失了。您的占位符应为view_1
。
您还可以考虑添加app:layout_constraintStart_toEndOf="@+id/view_1"
(或app:emptyVisibility="invisible"
),看看它如何影响布局。
答案 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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#999999">
<View
android:id="@+id/view_1"
android:layout_width="0dp"
android:layout_height="56dp"
android:background="#990000"
app:layout_constraintEnd_toStartOf="@+id/button"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="56dp"
android:text="Button"
android:visibility="visible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/view_1"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
从“消失”或“不可见”开始(取决于您希望UI / UX在该状态下的外观),一旦“完成加载页面”,然后再推入新的视图状态(这将导致按钮变为可见)。
我在这里错过了什么吗?