Динамически добавленный EditText игнорирует тему

У меня есть один EditText, определенный в xml, и я хочу добавить еще один динамически, но динамически добавленный EditText не использует тему, поскольку EditText добавляется с использованием xml. 2 EditTexts выглядят по-разному, что нежелательно. Смотрите изображение.

Динамически добавленный EditText игнорирует тему

Я попробовал это на API 28, а также на физическом устройстве Samsung S8+ API 26.

Есть идеи, как это исправить? Я не вижу причины, по которой тема игнорируется, и пока я знаю, что не могу применить тему к EditText?

Код:

public class TActivity extends AppCompatActivity {

 private LinearLayout Layout;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.t);

  Layout = (LinearLayout) findViewById(R.id.Layout);

  EditText editText = new EditText(this);
  editText.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
  editText.setInputType(InputType.TYPE_CLASS_TEXT);
  editText.setEnabled(true);
  editText.setTextIsSelectable(true);
  Layout.addView(editText);

 }
}

<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    android:id = "@+id/Layout"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:orientation = "vertical">

    <EditText
        android:id = "@+id/ThisWorks"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:inputType = "textMultiLine"/>
</LinearLayout>

<activity android:name = ".UI.TActivity" android:windowSoftInputMode = "adjustResize" android:theme = "Theme.AppCompat.Light.NoActionBar" />

Какова тема?

vilpe89 12.03.2019 20:43

@ vilpe89 - Theme.AppCompat.Light.NoActionBar - я также добавил это в вопрос - последняя строка. Спасибо

user7232539 12.03.2019 21:38
0
2
31
1

Ответы 1

В моем приложении я динамически добавляю представления, раздувая файл макета xml, и с темами проблем нет. Это фрагмент кода, который я использую:

    View newView = LayoutInflater.from(context).inflate(R.layout.field, null);
    newView.setId(ViewIdGenerator.generateViewId()); //This is a custom method
    //that sets Id for a newly created view 
    //to find it later on for usage
    ConstraintLayout.LayoutParams params = new ConstraintLayout.LayoutParams(
            ConstraintLayout.LayoutParams.MATCH_PARENT,
            ConstraintLayout.LayoutParams.WRAP_CONTENT);
    newView.setLayoutParams(params);

Поскольку здесь я создаю ConstraintLayout, а вам нужен EditText, вам, вероятно, следует создать XML-файл макета с EditText в качестве корня, как показано ниже, а затем раздуть его.

    <?xml version = "1.0" encoding = "utf-8"?>
    <EditText
        xmlns:android = "http://schemas.android.com/apk/res/android"
        android:id = "@+id/ThisWorks"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:inputType = "textMultiLine">
    </EditText>

Я не уверен, что это работает для вас, но вы можете попробовать.

Другие вопросы по теме