我已经创建了一个自定义的DialogFragment,就像它在开发者指南中所描述的那样。
现在我想做的事情听起来很简单,但我无法让它发挥作用。
我在我的布局xml中定义了android:background="@android:color/transparent"
我正在这样加载(在我的onCreateDialog中):
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
final View view = inflater.inflate(R.layout.pausedialog, null);
setStyle(STYLE_NO_FRAME, R.style.CustomDialog);
正如您所看到的,我还尝试在DialogFragment中设置自定义样式,其定义如下:
<style name="CustomDialog" parent="android:style/Theme.Dialog">
<item name="android:windowBackground">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:alwaysDrawnWithCache">false</item>
<item name="android:windowContentOverlay">@null</item>
</style>
我也试过getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(0));
这会导致空指针异常。
我正在使用android.support.v4.app.DialogFragment
。这可能是原因吗?
或者我做错了什么?
如果您需要对话框的屏幕截图,请告诉我们! 感谢
答案 0 :(得分:3)
尝试在dialogFragment类实现的onCreate方法中设置样式和主题。
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
int style=DialogFragment.STYLE_NO_TITLE;
int theme=android.R.style.Theme_Translucent;
setStyle(style, theme);
}
或
如果您正在使用Dialog类,那么您还可以在对话框实例上设置样式和主题。
答案 1 :(得分:2)
这对我有用。我创造了一种新风格:
<style name="CustomDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
然后在我的DialogFragment的onCreate()
方法中设置此样式,如下所示:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NO_TITLE, R.style.CustomDialog);
}
答案 2 :(得分:1)
这是我用来完全删除Dialog背景的样式.-
<style name="Theme.Dialog" parent="@android:style/Theme.Translucent.NoTitleBar">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
对于Dialog
创建,您创建的是DialogBuilder
,但是您手动对视图进行了充气,我想这就是问题所在。试试这个.-
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.customTheme));
AlertDialog dialog = builder.create();
dialog.show();
修改强>
另一种方法是扩展AlertDialog
.-
public class CustomDialog extends AlertDialog {
public DialogParent(Context context) {
super(context, R.style.CustomDialog);
setContentView(R.layout.pausedialog);
// More initialization stuff
}
}
然后'手动'实例化它.-
AlertDialog dialog = new CustomDialog(getActivity());
dialog.show();