Навигационная панель Lollipop, перекрывающая диалог с Gravity.Bottom

Kyle R спросил: 03 февраля 2018 в 11:50 в: android

Я следую методике, описанной здесь , чтобы мой Диалог поплавок находился в нижней части экрана и занимал всю ширину, подобную ящику. Это работает на каждой версии Android, на которой я нацелен (16+), за исключением Lollipop. Диалог будет плавать позади программных кнопок навигации (назад, дома и стека), что делает невозможным нажатие отрицательных или положительных кнопок в моих диалогах.

Я пробовал метод, описанный здесь , но не увенчались успехом. Я рассмотрел добавление нижнего отступа ко всем моим диалогам, но это означает, что мне придется устанавливать пользовательские представления вместо использования других методов alertdialog. Я думаю, что может быть способ избежать этого, которого я не нахожу.

ИЗМЕНИТЬ 1:

Я пробовал метод setSystemUiVisibility сейчас, отключив флаги для полноэкранного просмотра, immersive и скрыть навигацию. Однако диалоговое окно, когда оно создано, по-прежнему находится за кнопками навигации на экране (проверено в API 22). Я также пробовал

decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);

Вот мой текущий код:

@Override
public void onStart()
{
    super.onStart();    AlertDialog dlg = (AlertDialog) getDialog();    Window window = dlg.getWindow();
    WindowManager.LayoutParams params = window.getAttributes();
    params.width = ViewGroup.LayoutParams.MATCH_PARENT;
    params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
    params.gravity = Gravity.BOTTOM;    window.setAttributes(params);
    View decor = window.getDecorView();
    int flagset = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
    decor.setSystemUiVisibility(decor.getSystemUiVisibility() & ~flagset);}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.Theme_DialogTheme);
    //various methods adding elements to dialog    Dialog dlg = builder.create();    return dlg;}

и мои стили:

<style name="Theme.SnapTrash" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:statusBarColor">@android:color/black</item>
    <item name="colorPrimary">@color/colorSnapTrashPrimary</item>
    <item name="android:colorBackground">@color/colorSnapTrashPrimary</item>
    <item name="android:textColorPrimary">@color/colorSnapTrashTextPrimary</item>
    <item name="android:windowBackground">?android:attr/colorBackground</item>
    <item name="colorAccent">@color/colorSnapTrashAccent</item>
    <item name="colorPrimaryDark">@color/colorSnapTrashPrimaryDark</item>
    <item name="android:colorForeground">@android:color/black</item>
    <item name="android:textColorPrimaryInverse">@color/colorSnapTrashTextPrimaryInverse</item>
    <item name="android:navigationBarColor">@android:color/black</item>
    <item name="android:textColorSecondaryInverse">@color/secondary_text_material_dark</item>
    <item name="android:windowDrawsSystemBarBackgrounds">false</item>
    <item name="android:windowTranslucentNavigation">false</item></style><style name="Theme.DialogTheme" parent="Theme.AppCompat.Light.Dialog">
    <item name="android:windowBackground">@android:color/white</item>
    <item name="android:windowIsFloating">false</item>
    <item name="android:textColor">#FFEF5350</item>
    <item name="android:textColorPrimary">#FFEF5350</item>
    <item name="android:colorAccent">#999</item>
</style>

0 ответов