Текстовое представление и кнопка внутри относительной панели не отображаются в Android Oreo и Pie, но отлично видны в других версиях Android - PullRequest
1 голос
/ 12 марта 2019

Вид текста и кнопка внутри относительного макета не отображаются в Android Oreo и Pie, но отлично видны в других версиях Android.

if (mPromocodeCheckBox != null) {
            mPromocodeCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    if (inputMethodManager == null)
                        inputMethodManager = (InputMethodManager) ALTCommonUtils.currentActivity.getSystemService(Context.INPUT_METHOD_SERVICE);

                    if (mPromocodeLayout != null) {
                        if (isChecked) {
                            mPromocodeLayout.setVisibility(View.VISIBLE);
                            if (inputMethodManager != null && mPromocodeEditText != null) {
                                mPromocodeEditText.requestFocus();
                                inputMethodManager.showSoftInput(mPromocodeEditText, InputMethodManager.SHOW_IMPLICIT);
                            }
                            if (mPromocodeApplyButton != null)
                                mPromocodeApplyButton.setVisibility(View.VISIBLE);

                            if (mPromocodeEditText != null)
                                mPromocodeEditText.setEnabled(true);
                        } else {
                            mPromocodeLayout.setVisibility(View.GONE);
                            HandleViewsUtils.TextView_SetText(mPromocodeMsg, "");

                            if (inputMethodManager != null && mPromocodeEditText != null) {
                                HandleViewsUtils.EditText_SetText(mPromocodeEditText, "");
                                inputMethodManager.hideSoftInputFromWindow(mPromocodeEditText.getApplicationWindowToken(), 0);
                            }
                        }
                    }
                }
            });
        }

Для справки я прикрепил скриншот кода XML: enter image description here

enter image description here

enter image description here

1-й снимок экрана показывает нормальный экран как ниже, так и выше. enter image description here

2-й снимок экрана отлично показывает, когда я нажимаю флажок промокода ниже: enter image description here

3-й снимок экрана показывает несовершенство, когда я нажимаю переключатель промокод в oreo и pie enter image description here

1 Ответ

1 голос
/ 12 марта 2019

Ваши xml-скриншоты было больно читать, но я только что понял, что вы используете fill_parent вместо match_parent . FILL_PARENT устарела в API 8 впоследствии; Источник документации Google для разработчиков . Почему вы должны использовать Match Parent .

Возможно, пришло время перейти к более недавно представленным методам, шаблонам проектирования и библиотекам. Начните использовать макет ограничения вместо относительного макета. Преимущества макета ограничения и его введение в Android Studio 2.2 и далее. Прекратите использовать относительные макеты и используйте их только тогда, когда очень необходимо. Google I / O Talk 2018 по макетам, Ссылка . Вы не знаете, когда Google решит отказаться от него, и тогда у вас появятся проекты, которые перестанут работать.

Еще одна вещь, которую следует иметь в виду, - это новая библиотека поддержки AndroidX , в которую следует начать миграцию старых проектов. AndroidX будет новой единственной библиотекой поддержки на будущее, и все эти странные библиотеки поддержки на основе номеров будут прекращены.

Последнее самое важное - , вы должны начать разработку для Android API 28 + , который будет применяться Google с этого года; Разработчики Google Youtube Video . Итак, начните переход на текущие API и библиотеку поддержки.

Надеюсь, это поможет.

Добавление Удостоверьтесь в предупреждениях Android Studio на вашей базе кода об устаревании. Больше ссылок здесь;

...