ダイアログを全画面表示する方法はありますか?つまり、ダイアログが画面全体を占めるようにします(アクティビティなど)。 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>
そのコンストラクタにAndroid.R.style.ThemeやAndroid.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();
私の場合、次のコードが機能します:
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.mydialog2);
dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
これを試して
dialog = new Dialog(context,Android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
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();
全画面ダイアログでは、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);
これにより、ダイアログが全画面表示されます。
dialog_custom_layout.xml
into RelativeLayout
。それは私のために働いた。
答えは私には機能しません(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に設定します。誰かを助けたいです。
カスタムダイアログを次のように作成します
Dialog dialog = new Dialog(context, Android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
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);
}
以下に、各サイトからのパディングなしで画面全体を占めるカスタムレイアウトの全画面ダイアログを作成する手順を示します。
ステップ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();
}
}
このコードを試してください
protected void openDialog() {
Dialog dialog = new Dialog(this);
dialog.addContentView(new View(this), (new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)));
dialog.show();
}