2013-10-13 141 views
6

我有一個需求,我有一個活動,顯示的項目列表,如Facebook的飼料,當點擊一個按鈕從一個列表項的對話框必須彈出將顯示評論該項目。如何在一個活動內創建一個覆蓋視圖

我正在閱讀文檔,發現我們必須創建一個DialogFragment來實現這一點。如果這是正確的方法,請諮詢。

enter image description here

enter image description here

回答

16

你實際上並沒有使用一個對話框。我認爲對話更適合於向用戶展示簡單的視圖或僅提供警告/確認(通常使用AlertDialog完成)。

對於你的情況,我想最好的方法是在你的活動上有一個FrameLayout,你的主要佈局元素的兄弟,並且當你想要在主Activity的佈局上顯示一個類似的彈出窗口時添加一個Fragment。只要您將片段的視圖放在活動的根佈局元素之後,片段就會顯示在主佈局的頂部,作爲疊加層。例如: -

<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 width/height的FrameLayout只是無用的冗餘。無論如何,你可以將合併標籤解釋爲FrameLayout。 –