Как обрабатывать TextInputLayout через Java - PullRequest
0 голосов
/ 03 июня 2019

Я хочу создать интерфейс для планирования маршрута, который имеет 2 состояния 1 - Ввод начального и целевого адресов 2 - Выполнение одного и того же с помощью служб определения местоположения GPS

Я сделал макет содержимого с помощью XMLфайл, но так как мне нужно переключаться между ними динамически, я попытался настроить то же самое с помощью событий кнопки Java.Но всякий раз, когда я пытаюсь настроить TextInputLayout с EditText внутри через Java и пытаюсь скомпилировать и запустить его на моем эмуляторе Android, который является Pixel 2 API lvl 28, он выдает мне java.lang.IllegalArgumentError с сообщением «Стиль наДля этого компонента требуется, чтобы тема вашего приложения была Theme.AppCompat (или потомком) '.

    inputTop = new android.support.design.widget.TextInputLayout(getApplicationContext());
    inputTop.setLayoutParams(new ConstraintLayout.LayoutParams(Constraints.LayoutParams.FILL_PARENT - 120, (int) convertDpToPx(getApplicationContext(), 45)));
    inputTop.setX(convertDpToPx(getApplicationContext(), 174));
    inputTop.setY(convertDpToPx(getApplicationContext(), 60));

    inputTopInner = new EditText(getApplicationContext());
    inputTopInner.setLayoutParams(new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
    inputTopInner.setGravity(Gravity.CENTER);
    inputTopInner.setInputType(InputType.TYPE_CLASS_TEXT);
    inputTopInner.setTextColor(Color.rgb(151,151,151));
    inputTopInner.setTextSize(12);
    inputTopInner.setHint("Standort");
    inputTopInner.setEms(10);
    inputTop.addView(inputTopInner);

    layout.addView(viewTop);
    layout.addView(inputTop);

Кто-нибудь знает, как выполнить этот запуск, как это происходит при вводе в файл XML?

1 Ответ

1 голос
/ 03 июня 2019

Вот как мы сделали для нашего проекта:

Мы сохранили Parent как LinearLayout и добавили представления в этот макет

 LiearLayout parentView = findViewById(R.id.parentView);

            TextInputLayout emailTextInputLayout = new TextInputLayout(this, null, R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox);

            emailTextInputLayout.setHint("Please Enter Email Address");
            emailTextInputLayout.setBoxBackgroundMode(TextInputLayout.BOX_BACKGROUND_OUTLINE);
            emailTextInputLayout.setBoxCornerRadii(5, 5, 5, 5);
            TextInputEditText edtEmail = new TextInputEditText(emailTextInputLayout.getContext());
            emailTextInputLayout.addView(edtEmail);

            parentView.addView(emailTextInputLayout);


            TextInputLayout passTextInputLayout = new TextInputLayout(this, null, R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox);

            passTextInputLayout.setHint("Please Enter Password");
            passTextInputLayout.setBoxBackgroundMode(TextInputLayout.BOX_BACKGROUND_OUTLINE);
            passTextInputLayout.setBoxCornerRadii(5, 5, 5, 5);
            TextInputEditText edtPass = new TextInputEditText(passTextInputLayout.getContext());
            passTextInputLayout.addView(edtPass);

            parentView.addView(passTextInputLayout);
...