2013-10-13 8 views
6

Facebookのフィードのようなアイテムのリストを表示するアクティビティがあり、リストアイテムの1つからボタンをクリックすると、ダイアログにポップアップが表示され、コメントが表示されますその項目のアクティビティ内でオーバーレイビューを作成する方法

私はドキュメントを調べて、これを実現するために即座にDialogFragmentを作成する必要があることを知りました。これが正しい方法であればアドバイスをしてください。

enter image description here

enter image description here

答えて

16

あなたが実際にダイアログを使用する必要はありません。私は、あなたが(AlertDialogで普通に行われた)単純なビューやユーザへの警告/確認を表示したいときにダイアログがより適切であると思う。

あなたの状況では、あなたのメインレイアウト要素の兄弟であるFrameLayoutをアクティビティに配置し、そのメインアクティビティのレイアウト上にポップアップを表示するときにフラグメントを追加するのが最善の方法だと思います。フラグメントのビューをアクティビティのルートレイアウト要素の後に置く限り、フラグメントはメインレイアウトの上にオーバーレイとして表示されます。例えば:あなたの活動に

<merge xmlns:android="http://schemas.android.com/apk/res/android"> 
    <LinearLayout android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:orientation="vertical"> 
     <!-- Activity's main layout here --> 
    </LinearLayout> 

    <FrameLayout android:id="@+id/overlay_fragment_container" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"/> 
</merge> 

、その後、あなたはあなたがフラグメント表示したいとき:

FragmentManager fragmentManager = getFragmentManager(); 
fragmentManager.beginTransaction() 
     .add(R.id.overlay_fragment_container, yourFragment) 
     .commit(); 

は、それが役立ちます:)幸運を願っています!

+1

また、このフラグメントが既にロードされているかどうかを確認することもできます。例http://android.codota.com/scenarios/51891625da0a971a9b2a708a/android.app.FragmentManager?tag=out_2013_05_05_07_19_34 – drorw

+0

Victor、タグの使用を提案した理由を説明できますか?親としての通常のレイアウトを持つことができ、その中にFrameLayoutを持つことができますか?また、アクティビティ内にフラグメントがある場合、私はFragmentActivityを使用する必要がありますか? –

+0

アクティビティからのルートビュー(読み込んだレイアウトが設定されているid android.R.id.contentのビュー)はFrameLayoutです。マージ・タグを使用する代わりに、私のファイルのルートとしてFrameLayoutを使うことができますが、FrameLayout内のmatch_parentの幅と高さを持つFrameLayoutは単なる無駄な冗長性であるため、ビュー階層はさらに不必要に複雑になります。とにかく、マージタグをFrameLayoutとして解釈するだけで済みます。 –

関連する問題