与えられた:
- 画面上に垂直に配置された2つの要素(ViewPagerとFragment)
- 現在選択されている最初のフラグメント(ViewFlipper)でのアクションにより、上部のフラグメントでテキストベースのビューとWebViewベースのビューが切り替わり、下部のフラグメントが非表示/表示されます。
観察された:
- 下のフラグメントを非表示にすると、下のフラグメントが配置されている場所に空のスペースが残ります。
(上部のフラグメントをに設定して)RelativeとLinearLayoutの両方を試しましweight=1
たが、下部のフラグメントが削除された後は両方とも効果がありません。下部にまだ空きスペースがあります。
トップレベルのレイアウトファイルは次のとおりです。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="0dip" android:layout_weight="1"/>
<!-- This gets replaced with appropriate fragment at run time -->
<LinearLayout
android:id="@+id/scrollFragmentPlaceholder"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="110dip" />
</LinearLayout>
フラグメントを切り替えるコードは次のとおりです
Fragment scroll = getSupportFragmentManager().findFragmentById(R.id.scrollFragment);
if (scroll.isHidden() == isWebView)
return; // already handled, do nothing
FragmentTransaction tr = getSupportFragmentManager().beginTransaction();
if (scroll != null && scroll.isAdded()) {
if (isWebView) {
tr.hide(scroll);
} else
tr.show(scroll);
}
tr.commit();
そして、これがどのように見えるかです: