android-layout - 在LinearLayout视图中,折叠和滚动视图

  显示原文与译文双语对照的内容
0 0

我试图在一个包含两个 Fragments的Android布局中创建一个非常特殊的行为,当软键盘打开时,如下图所示。

fragment A 是一个需要软键盘输入的窗体,fragment B 是一个照相幻灯片,只用作视觉填充。

Behavior of android layout while opening keyboard 蓝色轮廓代表 root 视图。 fragment A 是固定高度,fragment B 填充剩余的垂直空间。 当键盘打开时,fragment B 折叠至 0,直到它的高度为,此时 fragment 变成可以滚动。

我已经尝试了以下操作:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 <FrameLayout
 android:id="@+id/FragmentB"
 android:layout_width="match_parent"
 android:layout_height="0dp"
 android:layout_weight="1"/>
 <ScrollView
 android:layout_width="match_parent"
 android:layout_height="wrap_content">
 <FrameLayout
 android:id="@+id/FragmentA"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"/>
 </ScrollView>
</LinearLayout>

在这个视图中,当软键盘打开时,fragment B 保持在相同高度,而 fragment 。


<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 <LinearLayout
 android:orientation="vertical"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 <FrameLayout
 android:id="@+id/FragmentB"
 android:layout_width="match_parent"
 android:layout_height="0dp"
 android:layout_weight="1"/>
 <FrameLayout
 android:id="@+id/FragmentA"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"/>
 </LinearLayout>
</ScrollView>

在这个视图中,fragment B 不断折叠,在 fragment 下面的视图底部仍然存在一个差异。

我如何实现在上面图表中布置的布局行为?

谢谢!

时间: 原作者:

0 0

我在这里找到了一个解决方案:

ScrollView中最小高度fill_parent和高度 wrap_content? 我得到的代码是:


<ScrollView
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:fillViewport="true"> <!-- FillViewport ensures the scrollview doesn't wrap the content -->
 <LinearLayout
 android:orientation="vertical"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:layout_weight="1"> <!-- Layout weight 1 means the LinearLayout will at least fill the scrollview, or wrap content if too big -->
 <FrameLayout
 android:id="@+id/FragmentB"
 android:layout_width="match_parent"
 android:layout_height="0dp"
 android:layout_weight="1"/>
 <FrameLayout
 android:id="@+id/FragmentA"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"/>
 </LinearLayout>
</ScrollView>

原作者:
...