Ответ 1
Дайте конструктору тему без диалога, например android.R.style.Theme или android.R.style.Theme_Light.
Есть ли способ сделать мой диалог в полноэкранном режиме, то есть диалоги занимают весь экран (например, Activity). Я пробовал использовать 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.
Следующий код работает в моем случае:
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);
Ответ не работает для меня (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. Надеюсь помочь кому-то.
попробуйте этот код
protected void openDialog() {
Dialog dialog = new Dialog(this);
dialog.addContentView(new View(this), (new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)));
dialog.show();
}
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 >
Я использую тему Activity with 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);
}
В диалоговом окне полного экрана вы должны расширить DialogFragment, он предоставит методы жизненного цикла фрагментов, и это рекомендуемый способ в документах разработчика Android. Вы также можете использовать простой диалог или 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
в RelativeLayout
. Это сработало для меня.