46

ダイアログビューを全画面表示にする方法はありますか。つまり、ダイアログが画面全体を占めるようにする方法はありますか(アクティビティのように)。LayoutParamsとのようなスタイルを使用してみまし <item name="android:windowFullscreen">true</item>たが、何も機能していないようです。

タイトルバーを取り除く方法を見つけましたが、ダイアログを全画面表示にする方法が見つかりませんでした。だから誰かが私にそれをする方法を提案することができます。

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTheme" parent="@android:style/Theme.Dialog">
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowFrame">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowBackground">@color/dialog_background</item>
</style>
</resources>
4

12 に答える 12

104

コンストラクターに、 android.R.style.Themeandroid.R.style.Theme_Lightなどの非ダイアログテーマを指定します。

@Bobによるコード。

Dialog dialog = new Dialog(context, android.R.style.Theme_Light); 
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
dialog.setContentView(R.layout.MyCustomDialogLayout); 
dialog.show();
于 2012-04-16T11:53:28.477 に答える
35

私の場合、次のコードが機能します。

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
dialog.setContentView(R.layout.mydialog2);
dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
于 2012-04-16T12:05:56.700 に答える
20

これを試して

dialog = new Dialog(context,android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
于 2013-04-27T06:47:43.360 に答える
4

1.ダイアログスタイルをカスタマイズする

 <style name = "MyDialog" >
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name = "android:windowContentOverlay" >@null</item >
        <item name = "android:colorBackgroundCacheHint" >@null</item >
        <item name = "android:backgroundDimEnabled">true</item>
        <item name = "android:windowBackground" >@android:color/transparent</item >
    </style >

2:ダイアログをカスタマイズする

WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
            int width = wm.getDefaultDisplay().getWidth();
            int height = wm.getDefaultDisplay().getHeight();
            final Dialog dialog = new Dialog(this, R.style.MyDialog);
            View view = LayoutInflater.from(this).inflate(R.layout.layout_dialog, null);

            WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
            params.width = WindowManager.LayoutParams.MATCH_PARENT;
            params.height = WindowManager.LayoutParams.WRAP_CONTENT;

            dialog.setContentView(view);
            dialog.getWindow().setGravity(Gravity.BOTTOM);
            dialog.getWindow().setWindowAnimations(R.style.mydialog_Style);
            dialog.show();

于 2016-03-29T04:10:56.700 に答える
3

答えは私にはうまくいきません(sdk 21、samsung galaxy s5)。検索とテストの結果、ダイアログを全画面表示に設定するための重要なポイントは<item name="android:windowIsFloating">false</item>、ダイアログスタイルにあることがわかりました。SDKのほとんどのスタイルのダイアログはそれを真に設定します!スタイルでfalseに設定し、で使用する

AlertDialog.Builder = new AlertDialog.Builder(getActivity(), R.style.YourStyle);

あなたのスタイルは次のようになります

<style name="YourStyle">
    <item name="android:windowIsFloating">false</item>
    ...
</style>

falseに設定すると、フルスクリーンになります。そしてもっと、あなたは使うことができます

dialog.getWindow.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);

高さをwrap_contentに設定します。誰かを助けたいと思っています。

于 2016-08-05T02:19:22.477 に答える
3

にラップdialog_custom_layout.xmlしてみてくださいRelativeLayout。それは私のために働いた。

于 2016-09-23T07:43:57.560 に答える
3

フルスクリーンダイアログの場合は、ライフサイクルメソッドDialogFragmentを提供するように拡張する必要があります。これは、Android開発者向けドキュメントで推奨される方法であり、単純な方法でも使用できます。FragmentDialogAlertDialog

ダイアログインスタンスを作成するときは、次android.R.style.Theme_Black_NoTitleBar_Fullscreenのようなコンテキストでテーマを使用してください。

Dialog dialog = new Dialog(getActivity(), android.R.style.Theme_Black_NoTitleBar_Fullscreen);

また

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), android.R.style.Theme_Black_NoTitleBar_Fullscreen);

これにより、ダイアログが全画面で表示されます。

于 2017-06-26T11:12:39.867 に答える
1

try this code

protected void openDialog() {
        Dialog dialog = new Dialog(this);
        dialog.addContentView(new View(this), (new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)));
        dialog.show();
    }
于 2012-04-16T11:58:11.483 に答える
1

Dialogテーマのアクティビティを使用しています。この場合、フルスクリーンは次のように機能しました。

int mUIFlag = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().getDecorView().setSystemUiVisibility(mUIFlag);

        getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
        setContentView(R.layout.lockscreen_activity);
}
于 2017-05-25T15:37:19.777 に答える
1

カスタムダイアログを次のように作成します

Dialog dialog = new Dialog(context, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
于 2018-01-23T13:05:27.763 に答える
1

各サイトからのパディングなしで画面全体を占めるカスタムレイアウトでフルスクリーンダイアログを作成する方法の手順は次のとおりです。

ステップ1:という名前のカスタムダイアログレイアウトを定義するlayout_fullscreen_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/colorPrimary">

    <!-- Your dialog content here -->

</LinearLayout>

ステップ2:styles.xml名前付きで新しいスタイルを定義するFullScreenDialog

<style name="FullScreenDialog" parent="Theme.AppCompat.Dialog">
    <item name="android:windowBackground">@android:color/transparent</item>
</style>

ステップ3:ダイアログを作成して表示するメソッドを作成する

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        createAndShowDialog(this);
    }

    // This method used to create and show a full screen dialog with custom layout.
    public void createAndShowDialog(Context context) {
        Dialog dialog = new Dialog(context, R.style.FullScreenDialog);
        dialog.setContentView(R.layout.layout_fullscreen_dialog);

        WindowManager.LayoutParams layoutParams = dialog.getWindow().getAttributes();
        dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
        dialog.getWindow().setAttributes(layoutParams);
        dialog.show();
    }
}
于 2019-02-24T04:18:18.587 に答える
0

データバインディングを使用したフルスクリーンダイアログ

    fun showUserQrCode(
    mContext: Activity,
    showAddMore: Boolean,
    message: String?,
    skipClick: View.OnClickListener?,
    addMoreClick: View.OnClickListener?
) {

    val dialog = Dialog(mContext, android.R.style.Theme_Black_NoTitleBar_Fullscreen)
    val discountBinding: PopupUserQrCodeBinding = DataBindingUtil.inflate(
        LayoutInflater.from(mContext),
        R.layout.popup_user_qr_code,
        null,
        false
    )
    discountBinding.btnSkip.setOnClickListener(skipClick)


    dialog.setContentView(discountBinding.root)
    dialog.show()
}

バインドなし

    val dialog = Dialog(mContext, android.R.style.Theme_Black_NoTitleBar_Fullscreen)
    dialog.setContentView(R.layout.slider_layout)
    dialog.show()
于 2021-09-13T13:22:14.747 に答える