1

開発者ガイドで説明されているように、カスタム DialogFragment を作成しました。今私がやろうとしていることは簡単に聞こえますが、うまくいきません。私は定義android:background="@android:color/transparent"しました:私がこのようにロードしている私のレイアウトxmlで(私の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います。これが原因でしょうか?それとも私は何か他のことを間違っていますか?

4

3 に答える 3

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 クラスを使用している場合は、ダイアログ インスタンスにスタイルとテーマを設定することもできます。

于 2013-10-03T20:50:52.620 に答える
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);
}
于 2014-05-19T04:36:16.643 に答える
1

これは、ダイアログの背景を完全に削除するために使用するスタイルです.-

<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();
于 2013-10-03T19:11:13.243 に答える