2014-11-22 35 views
11

材料設計中的全屏對話框應該在操作欄/工具欄上有確認和忽視操作。Android全屏對話框確認和忽視操作

Material design fullscreen dialog

我的問題,我怎麼能做到這一點?

要顯示該對話框:

getFragmentManager().beginTransaction() 
    .add(R.id.container, new MyDialogFragment()) 
    .addToBackStack(null).commit(); 

我的對話片段:

public class MyDialogFragment extends DialogFragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragment_layout, container, false); 
    } 
} 
+1

什麼是您的佈局文件的樣子?我在創建全屏對話框時遇到了問題,而且您似乎已經完成了該操作。 – Jon 2015-06-23 10:03:28

+0

你能詳細說明你遇到的困難嗎?佈局本身應該像你想要的那樣簡單或複雜,我假設你已經完成了活動和片段的佈局。全屏對話框唯一的視覺差異是我用紅色突出顯示的區域。 – SunnySydeUp 2015-06-23 10:13:17

+0

我認爲這個問題(http://stackoverflow.com/questions/30684312/android-full-screen-dialog-callback-issue)總結得很好。默認情況下,對話框不是全屏。 – Jon 2015-06-23 10:16:01

回答

19

只有兩件事情需要做:

  • 更改了圖標
  • 添加一個菜單到片段

更改圖標:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true); 
    ((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    ((ActionBarActivity) getActivity()).getSupportActionBar().setHomeAsUpIndicator(android.R.drawable.ic_menu_close_clear_cancel); 
} 

添加保存菜單:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.save_menu, menu); 
} 

R.menu.save_menu:

<?xml version="1.0" encoding="utf-8"?> 
<menu 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:id="@+id/save 
     app:showAsAction="always|withText" 
     android:title="@string/save"/> 
</menu> 
+0

對話框關閉時不應該還原活動的操作欄嗎? – Gonzalo 2017-03-10 15:31:40