Android全屏对话框的确认和取消操作

12

在material design中,全屏对话框应该在操作栏/工具栏上具有确认和拒绝操作。

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
你能详细说明你遇到了什么困难吗?布局本身可以是简单或复杂的,我假设你已经为活动和片段做过布局。全屏对话框的唯一视觉区别是我在红色区域中突出显示的部分。 - SunnySydeUp
我认为这个问题(https://dev59.com/xYvda4cB1Zd3GeqPcrCD)很好地概括了它。默认情况下,对话框不是全屏的。 - Jon
对于全屏对话框,您应将其视为片段进行处理。MyDialogDragment fragment = new MyDialogFragment(); getSupportFragmentManager().beginTransaction().add(android.R.id.content, fragment).addToBackStack(null).commit();Android文档中有一个很好的示例,请滚动到“对话框全屏”部分: http://developer.android.com/guide/topics/ui/dialogs.html - SunnySydeUp
1
@Dellkan 有些情况下,您可能希望将其显示为对话框,例如在像平板电脑这样的大屏幕上,然后在较小的设备上显示为全屏片段。一个可能的用例可能是登录对话框。由于登录通常只需要用户名和密码,因此没有必要用两个EditText和一个登录按钮填充整个平板电脑屏幕。因此,对话框似乎更合适。但是在较小的设备上,对话框可能太小了,因此最好将其显示为全屏对话框。 - SunnySydeUp
显示剩余3条评论
1个回答

20

只需要完成两件事:

  • 更改向上箭头图标
  • 向片段添加菜单

更改图标:

@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>

3
当对话框被关闭时,您应该恢复活动的操作栏吗? - Gonzalo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接