3

ダイアログ フラグメントから上下の境界線を削除する必要があります。どのようにしますか?

    AlertDialog.Builder builder = new AlertDialog.Builder(activity);
    builder.setCancelable(true);

    LayoutInflater inflater = LayoutInflater.from(activity);
    View view = inflater.inflate(R.layout.variants_dialog, null);

    // setup views
    setupListView(view);
    ...

    builder.setView(view);
    return builder.create(); // HERE I HAVE TOP & BOTTOM BLACK BORDERS

これは何もしません:

        builder.setView(view);
        AlertDialog result = builder.create();
        result.getWindow().setBackgroundDrawable(new ColorDrawable());
        return result;

そのような方法はありません:

         dialog.setView(layout, 0, 0, 0, 0);
4

4 に答える 4

3

これは私のために働いたものです:

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
于 2012-12-18T02:20:32.327 に答える
3

見つけた解決策!!

ありません

setView(layout, 0, 0, 0, 0);

dialogFragment からのビルダーですが、AlertDialog にはこのメソッドがあります。そのため、返す代わりに

builder.create();

これを行う

//dont set view for builder!
AlertDialog result = builder.create();
result.setView(view, 0, 0, 0, 0);
return result;
于 2012-08-01T08:56:11.980 に答える
3

私は DialogFragments にはあまり詳しくありませんが、通常のダイアログでこれを行うには、通常 R.value.styles を追加して以下を追加します。

 <style name="myDialog" parent="@android:style/Theme.Dialog">
    <item name="android:buttonStyle">@style/Button</item>
    <item name="android:windowBackground">@android:color/transparent</item> 
    <item name="android:windowAnimationStyle">@style/PauseDialogAnimation</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:textColor">#FFFFFFFF</item>
    <item name="android:shadowColor">#cdc9c9</item>
    <item name="android:shadowDx">0</item>
    <item name="android:shadowDy">-1</item>
    <item name="android:shadowRadius">0.5</item>
</style>

そして、ダイアログがスタイルを持つように設定しますmyDialog。ただし、dialogFragmentsでは、初期化時にスタイルを定義する必要があるようですDialogFragment.STYLE_NO_FRAME;。完全な答えではないことはわかっていますが、それが多少役立つことを願っています。

于 2012-07-30T07:41:47.890 に答える
1

少し前に同じような問題がありました。問題は、Builderでダイアログのパディングをまったく操作できないことです。私の回避策は、AlertDialogのサブクラスを作成することでした。

final class PaddinglessDialog extends AlertDialog {
    public PaddinglessDialog(Context context, int theme) {
        super(context, theme);
    }
}

それから私はそれをこのように使い続けました:

PaddinglessDialog alertDialog = new PaddinglessDialog(this, android.R.style.Theme_Holo_Light_Panel);
View layout = LayoutInflater.from(this).inflate(R.layout.my_dialog_layout, ...);
alertDialog.setView(layout, 0, 0, 0, 0);
alertDialog.setCanceledOnTouchOutside(false);
...
dialog = alertDialog;
于 2012-07-30T07:44:05.397 に答える