Настройка TextView TextAppeareance Programmatically в android

Я собираюсь реализовать LinearLayout в котором LinearLayout поля программно генерируются в соответствии с количеством полей таблицы базы данных.

К сожалению, когда я пытаюсь установить атрибут: textApperance как textApperanceLarge в TextView , он не работает. Ниже мой код …

 for (int i = 0; i < selectedProducts; i++) { premLayout[i] = new LinearLayout(this); premLayout[i].setLayoutParams(new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); premLayout[i].setOrientation(LinearLayout.HORIZONTAL); premLayout[i].setGravity(Gravity.TOP); premTextView[i] = new TextView(this); premTextView[i].setLayoutParams(new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 2.0f)); premTextView[i].setTextAppearance(this, android.R.attr.textAppearanceLarge); premTextView[i].setText(premiumChannels.get(i)); premTextView[i].setId(i + 600); int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 20, getResources().getDisplayMetrics()); premTextView[i].setWidth(px); premLayout[i].addView(premTextView[i]); 

Solutions Collecting From Web of "Настройка TextView TextAppeareance Programmatically в android"

Я разрабатываю Visual Studio 2015 и Xamarin. Я столкнулся с проблемой TextView.SetTextAppearance описанной выше (я создаю приложение для работы на платформах API 22 и 23). Я попытался расширить класс TextView и переопределить SetTextAppearance , но в итоге отказался от этого подхода и вместо этого решил использовать устаревший TextView.SetTextAppearance(Context, int) завернутый в #pragma warning disable 618 / #pragma warning restore 618 для подавления предупреждения компиляции. Успешно работает, и тот же apk отлично работает на устройствах Android 5.1 / API 22 и Android 6.0 / API 23.

Используйте это. Это будет работать.

 textView.setTextAppearance(this, android.R.style.TextAppearance_Large); 

Или, поскольку API 23, вам не нужно передавать контекст. Следовательно, вы можете просто позвонить:

 textView.setTextAppearance(android.R.style.TextAppearance_Large); 

Если вы хотите поддерживать API 23 или выше, а также более низкий, вы можете использовать приведенный ниже метод для упрощения своей задачи. Используйте метод ниже, только если вы уже настроили API 23 или выше. Если вы нацеливаете API на менее чем 23, приведенный ниже код даст ошибку, поскольку новый метод не был доступен в нем.

 public void setTextAppearance(Context context, int resId) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { super.setTextAppearance(context, resId); } else { super.setTextAppearance(resId); } }