繁体   English   中英

使用appCompat 23+创建自定义材质对话框的正确方法

[英]Correct way to make a custom material dialog with appCompat 23+

好的,我真的很困惑如何使用最新的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;
    }
}

两种方式似乎产生相同的结果。 我个人更喜欢第一种方式,但是当连线视图边框结束时会出现涟漪效应问题,如下图所示。

涟漪效应失败

这是一个错误吗? (一定是!)我可以修复它还是应该转换到第二种方式? (这对涟漪效果很好)。 考虑到大多数材料对话库使用第一种方式,这两种方法之间的最佳方法是什么?

编辑:第一种方式上的波纹故障似乎不再发生,所以我仍然不确定哪两种是正确的方式。

第二个approch似乎更好,因为AppCompatDialogFragment扩展了DialogFragment并为您完成了所有繁重的任务。 此外,它通过抽象不必要的细节(与OOP内联)看起来更清晰。

也给出了所需的效果;)

第二种方法更好,因为它是DialogFragment的特殊版本,它使用AppCompatDialog代替平台样式的对话框。 AppCompatDialogFragment是子类的DialogFragment ,将继承的所有属性DialogFragment

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM