好的,我真的搞不懂如何使用最新的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吗?(必须是!)我能修复它吗?或者我应该直接转换成第二种方式?(它可以很好地处理涟漪效果)。考虑到大多数材质对话框库都在使用第一种方法,在这两种方法之间最好的方法是什么?
编辑:第一种方式的波动毛刺似乎不再发生了,所以我仍然不确定哪种方式是正确的。
发布于 2015-09-23 18:59:48
的第二种方法似乎更好,因为AppCompatDialogFragment
扩展了DialogFragment
,并为您完成了所有繁重的工作。此外,通过抽象不必要的细节(与OOP内联),它看起来更简洁。
还能产生所需的效果;)
发布于 2016-04-11 19:47:45
Second Approach更好,因为它是DialogFragment的特殊版本,它使用AppCompatDialog代替平台样式的对话框。AppCompatDialogFragment
是DialogFragment
的子类,它将继承DialogFragment
的所有属性。
https://stackoverflow.com/questions/32621693
复制相似问题