首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用appCompat 23+制作自定义材质对话框的正确方法

使用appCompat 23+制作自定义材质对话框的正确方法
EN

Stack Overflow用户
提问于 2015-09-17 10:29:21
回答 2查看 9.7K关注 0票数 22

好的,我真的搞不懂如何使用最新的appcompat v23.0.1正确地制作一个自定义对话框这里有几种方法

第一种方法:

public class AddTipDialogFrag extends DialogFragment
{
 @Override
 public Dialog onCreateDialog(Bundle savedInstanceState)
    {
        int title = getArguments().getInt("title");
        AppCompatDialog dialogCompat = new AppCompatDialog(getActivity(), R.style.MyAlertDialogStyle);
        dialogCompat.setTitle(title); //doesn't work btw
        dialogCompat.setContentView(R.layout.add_tip_fragment);
        return dialogCompat;
    }
}

第二种方法:

public class AddTipDialogFrag extends AppCompatDialogFragment
{ 
   @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        View view = inflater.inflate(R.layout.add_tip_fragment,container, false);
        int title = getArguments().getInt("title");
        getDialog().setTitle(title);
        return view;
    }
}

这两种方法似乎产生了相同的结果。就我个人而言,我更喜欢第一种方式,但是有一个连锁反应的问题,当custem边框结束时,它会被剪掉,正如你在下面的图片中看到的那样。

这是一个bug吗?(必须是!)我能修复它吗?或者我应该直接转换成第二种方式?(它可以很好地处理涟漪效果)。考虑到大多数材质对话框库都在使用第一种方法,在这两种方法之间最好的方法是什么?

编辑:第一种方式的波动毛刺似乎不再发生了,所以我仍然不确定哪种方式是正确的。

EN

回答 2

Stack Overflow用户

发布于 2015-09-23 18:59:48

的第二种方法似乎更好,因为AppCompatDialogFragment扩展了DialogFragment,并为您完成了所有繁重的工作。此外,通过抽象不必要的细节(与OOP内联),它看起来更简洁。

还能产生所需的效果;)

票数 15
EN

Stack Overflow用户

发布于 2016-04-11 19:47:45

Second Approach更好,因为它是DialogFragment的特殊版本,它使用AppCompatDialog代替平台样式的对话框。AppCompatDialogFragmentDialogFragment的子类,它将继承DialogFragment的所有属性。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32621693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档