web-dev-qa-db-ja.com

全画面表示のカスタムダイアログ?

ダイアログを全画面表示する方法はありますか?つまり、ダイアログが画面全体を占めるようにします(アクティビティなど)。 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>
41
Bob

そのコンストラクタに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();
90
Renard

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

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
dialog.setContentView(R.layout.mydialog2);
dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
31
Nibha Jain

これを試して

dialog = new Dialog(context,Android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
17
Lakshmanan

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();
3
Allen

全画面ダイアログでは、DialogFragmentを拡張する必要があります。これはFragmentライフサイクルメソッドを提供し、これはAndroid開発者ドキュメントで使用できるシンプルなDialogまたはAlertDialogも。

ダイアログインスタンスを作成するときは、単に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);

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

2
Biswajit

dialog_custom_layout.xml into RelativeLayout。それは私のために働いた。

1
Ayan

答えは私には機能しません(sdk 21、samsung galaxy s5)。検索してテストした後、フルスクリーンのダイアログを設定するための重要なポイントは<item name="Android:windowIsFloating">false</item>あなたのダイアログスタイルで。 SDKのほとんどのDialogのスタイルはtrueに設定します!スタイルで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に設定します。誰かを助けたいです。

1
AssIstne

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

Dialog dialog = new Dialog(context, Android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
0
venu46

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

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);
}
0
Hamburg is nice

以下に、各サイトからのパディングなしで画面全体を占めるカスタムレイアウトの全画面ダイアログを作成する手順を示します。

ステップ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();
    }
}
0
Nhất Giang

このコードを試してください

protected void openDialog() {
        Dialog dialog = new Dialog(this);
        dialog.addContentView(new View(this), (new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)));
        dialog.show();
    }
0
vipin