Как исправить, что AlertDialog не переносится на макет на всех устройствах - PullRequest
0 голосов
/ 05 ноября 2019

Я попытался установить мою alertDialog тему на R.style.Theme_MaterialComponents_Light_Dialog_Alert

Хотя это сработало, чтобы обернуть содержимое моего alertDialog в мой макет, накачанный на моем huawei y9 (android pie), но это не обернулосодержимое в lenovo api 19

Я попытался установить LayoutParams на wrap_content, но все равно ничего не получилось:

val inflater = LayoutInflater.from(mCtx)
    val viewInflater = inflater.inflate(R.layout.popup_menu,null)
    val window = AlertDialog.Builder(mCtx,R.style.Theme_MaterialComponents_Light_Dialog_Alert)
            .setView(viewInflater)
            .setCancelable(false)
    alertD = window.create()
    //alertD.window?.setLayout(WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.WRAP_CONTENT)
    alertD.show()

Так что мне нужен AlertDialog, чтобы обернуть его содержимое вмой макет на всех телефонах.

1 Ответ

0 голосов
/ 05 ноября 2019

попробуйте создать собственный стиль диалога и добавьте ширину и высоту в процентах.

min_Width_minor:

Минимальный размер платформы, необходимый для ширины диалога, когдаэто вдоль малой оси (то есть экран портретный). Это может быть либо дробь, либо размер.

Min_witdh_major:

Желаемый минимальный размер платформы для ширины диалогового окна, когда он находится вдольмалая ось (то есть экран портретный). Это может быть либо дробь, либо размер.

попробуйте ниже Пример.

<style name="AlertDialogCustom" parent="Theme.AppCompat.Light.Dialog.Alert">

    <item name="android:windowMinWidthMajor">80%</item>
    <item name="android:windowMinWidthMinor">80%</item>
    <item name="windowFixedHeightMinor">80%</item>
    <item name="windowFixedHeightMajor">80%</item>

    <item name="colorAccent">#FFC107</item>
    <!-- Used for the title and text -->
    <item name="android:textColorPrimary">#FFFFFF</item>
    <!-- Used for the background -->
    <item name="android:background">#4CAF50</item>

</style>


 AlertDialog.Builder myAlert = new AlertDialog.Builder(this, R.style.AlertDialogCustom);
        myAlert.setTitle("Title");
        myAlert.setMessage("1298201");
        myAlert.show();
...