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

时间:2015-09-17 02:29:21

标签: android android-appcompat android-dialogfragment android-dialog appcompat-v7-r23

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

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

ripple effect fail

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

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

1 个答案:

答案 0 :(得分:13)

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

也给出了期望的效果;)

相关问题