Android 滚动片段中灵活内容的布局问题
Android Layout problem with flexible content in a scrolling fragment
我在为以下情况创建 Android 布局时遇到问题:
它是一个片段,顶部有一个 webview,下面有一些其他布局组件。 webview 本身不应该是可滚动的。孔片段应该是可滚动的。为了更好地可视化,这里有一张图片。
webview 和 recyclerview 高度灵活,具体取决于内容。 webview 和 recylerview 应该总是在不滚动的情况下显示所有内容。孔片段应该是可折叠的。
我尝试了几种滚动视图、嵌套滚动视图和约束布局的组合。但是大多数时候我的 webview 没有显示。
我的问题是:这个布局组件应该如何嵌套以及组件高度的正确选项是什么(match_parent, ....)?
这是我最近尝试的一个例子。未显示网络视图。
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView
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:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:fillViewport="true"
android:requiresFadingEdge="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
app:layout_constraintBottom_toTopOf="@+id/txtSimilarTopics"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/scrollToTopHelper"
android:layout_width="100dp"
android:layout_height="150dp"
app:layout_constraintBottom_toBottomOf="@+id/webView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/txtSim"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="16dp"
android:textColor="@color/colorBlack"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/webView"
tools:text="Ähnliche Themen" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txt"
tools:itemCount="3"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
所以这不是布局问题。我的问题是由网页上的 JavaScript 错误引起的。这就是页面未显示的原因。
我在为以下情况创建 Android 布局时遇到问题: 它是一个片段,顶部有一个 webview,下面有一些其他布局组件。 webview 本身不应该是可滚动的。孔片段应该是可滚动的。为了更好地可视化,这里有一张图片。
webview 和 recyclerview 高度灵活,具体取决于内容。 webview 和 recylerview 应该总是在不滚动的情况下显示所有内容。孔片段应该是可折叠的。
我尝试了几种滚动视图、嵌套滚动视图和约束布局的组合。但是大多数时候我的 webview 没有显示。
我的问题是:这个布局组件应该如何嵌套以及组件高度的正确选项是什么(match_parent, ....)?
这是我最近尝试的一个例子。未显示网络视图。
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView
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:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:fillViewport="true"
android:requiresFadingEdge="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
app:layout_constraintBottom_toTopOf="@+id/txtSimilarTopics"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/scrollToTopHelper"
android:layout_width="100dp"
android:layout_height="150dp"
app:layout_constraintBottom_toBottomOf="@+id/webView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/txtSim"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="16dp"
android:textColor="@color/colorBlack"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/webView"
tools:text="Ähnliche Themen" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txt"
tools:itemCount="3"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
所以这不是布局问题。我的问题是由网页上的 JavaScript 错误引起的。这就是页面未显示的原因。