Android: стиль TextInputLayout из не класса Activity - PullRequest
0 голосов
/ 25 апреля 2020

Я хочу создать TextInputLayout с рамкой, используя стиль: R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox из неактивного класса.

Ниже приведен пример кода:

TextInputLayout textInputLayout = new TextInputLayout(context, null, R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox);

textInputLayout.setHint("My Hint");
textInputLayout.setBoxBackgroundMode(TextInputLayout.BOX_BACKGROUND_OUTLINE);
textInputLayout.setBoxCornerRadii(5, 5, 5, 5);
TextInputEditText et = new TextInputEditText(textInputLayout.getContext());
textInputLayout.addView(et);

Когда я запускаю это Я получаю следующие cra sh:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.tsp.bonw, PID: 10121
    java.lang.NullPointerException: Attempt to invoke virtual method 'float com.google.android.material.shape.MaterialShapeDrawable.getTopLeftCornerResolvedSize()' on a null object reference
        at com.google.android.material.textfield.TextInputLayout.setBoxCornerRadii(TextInputLayout.java:938)

Я думаю, я не могу установить атрибут стиля: R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox для TextInputLayout из класса неактивности.

Если я удаляю вызов setBoxCornerRadii, TextInputLayout правильно отображается в моей деятельности, но без поля. Мне нужно TextInputLayout, чтобы показать с полем.

Любая помощь очень ценится. Спасибо.

1 Ответ

0 голосов
/ 25 апреля 2020

установить стиль TextInputLayout с контекстной оболочкой. Я думаю, что он должен работать.

val textInputLayout = TextInputLayout(
        ContextThemeWrapper(
            this,
            R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox
        )
    )
...