У меня есть один EditText, определенный в xml, и я хочу добавить еще один динамически, но динамически добавленный EditText не использует тему, поскольку EditText добавляется с использованием xml. 2 EditTexts выглядят по-разному, что нежелательно. Смотрите изображение.
Я попробовал это на 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 - Theme.AppCompat.Light.NoActionBar - я также добавил это в вопрос - последняя строка. Спасибо
В моем приложении я динамически добавляю представления, раздувая файл макета 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>
Я не уверен, что это работает для вас, но вы можете попробовать.
Какова тема?