71

LinearLayoutデータベース テーブルのフィールド数に応じて入力フィールドがプログラムで生成されるを実装します。

残念ながら、属性を設定しようとすると、 のtextApperanceように機能しません。以下は私のコードです...textApperanceLargeTextView

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]);
4

2 に答える 2

216

このように使用します。それが動作します。

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);
    }
}
于 2013-04-29T04:26:51.763 に答える