18

私のアクティビティは、すべての GUI フラグメントを単一の XML レイアウトで宣言しています。起動時にいくつかのフラグメントを表示するだけで済みます。残りは、ユーザーがアプリを操作するときに表示されます。レイアウトの一部は次のとおりです。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <fragment
        android:id="@+id/map_panel"
        android:name="com.example.MapPanel"
        android:layout_width="match_parent"
        android:layout_height="@dimen/map_panel_height" />
    <fragment
        android:id="@+id/list_panel"
        android:name="com.example.ListPanel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/map_panel" />
    <fragment
        android:id="@+id/detail_panel"
        android:name="com.example.DetailPanel"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/map_panel"
        android:visibility="gone" />

私の意図は、list_panelフラグメントが起動時に表示されdetail_panel、ユーザーがリストから何かを選択するまでフラグメントが非表示になることです。

デフォルトでは、フラグメントはisHidden属性が false で開始されます。つまり、私のアクティビティは、ロードされたフラグメントを繰り返し処理し、起動時 isHidden(true)のようにフラグメントを手動で呼び出す必要があります。detail_panel

isHiddenXML レイアウトでステータスを宣言したいと思います。ただし、宣言で設定android:visibility="gone"してもステータスは変更されません。別の属性に関するドキュメントが見つかりません。<fragment>isHidden

に XML 属性を設定して<fragment>非表示にすることはできますか?

注: ビューの可視性には関心がなく、fragment.isHidden()値に関心があります。これは、FragmentManager がバック スタックを操作してアニメーションを実行する方法に影響します。transaction.show(fragment)ビューが非表示またはなくなったが、値が false のフラグメントを呼び出した場合fragment.isHidden()、FragmentManager はビューを表示しません。http://developer.android.com/reference/android/app/Fragment.html#isHidden()を参照してください。

4

5 に答える 5

0
public void showHideFrgament(final Fragment fragment){

    FragmentTransaction ft = getFragmentManager().beginTransaction();
                    ft.setCustomAnimations(android.R.animator.fade_in,
                            android.R.animator.fade_out);

    if (fragment.isHidden()) {
                    ft.show(fragment);
                    Log.d("hidden","Show");
                } else {
                    ft.hide(fragment);
                    Log.d("Shown","Hide");                        
                }
                ft.commit();

 }
于 2015-03-24T10:09:44.533 に答える
-1

フラグメントを参照するための isVisible メソッドがあります。 Gone への可視性はスペースを取りませんが、Invisible は実際のビュー スペースを取ります。

于 2013-11-15T03:21:30.233 に答える