我将实现一个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]);
答案 0 :(得分:183)
像这样使用。它会起作用。
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);
}
}
答案 1 :(得分:7)
使用TextViewCompat.setTextAppearance()
方法处理您的sdk版本检查。