好的,我真的很困惑如何使用最新的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;
}
}
两种方式似乎产生相同的结果。我个人更喜欢第一种方式,但是当连线视图边框结束时会出现涟漪效应问题,如下图所示。
这是一个错误吗? (一定是!)我可以修复它还是应该转换到第二种方式? (这对涟漪效果很好)。考虑到大多数材料对话框库使用第一种方式,这两种方法之间的最佳方法是什么?
编辑:第一种方式上的波纹故障似乎不再发生,所以我仍然不确定这两种方式的正确方法。答案 0 :(得分:13)
第二个approch 似乎更好,AppCompatDialogFragment
延伸DialogFragment
并为您完成所有繁重的工作。此外,它通过抽象不必要的细节(与OOP内联)看起来更清晰。
也给出了期望的效果;)