developer tip

Android에서 프로그래밍 방식으로 TextView TextAppeareance 설정

optionbox 2020. 12. 6. 21:28
반응형

Android에서 프로그래밍 방식으로 TextView TextAppeareance 설정


LinearLayout입력 필드가 데이터베이스 테이블의 필드 수에 따라 프로그래밍 방식으로 생성되는를 구현할 것 입니다.

나는 속성을 설정하려고 할 때 불행하게도, : textApperancetextApperanceLarge에서 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]);

이렇게 사용하십시오. 작동합니다.

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

또는 API 23부터 컨텍스트를 전달할 필요가 없습니다. 따라서 다음과 같이 간단히 호출 할 수 있습니다.

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

API 23 이상과 하위 API를 지원하려는 경우 아래 방법을 사용하여 작업을 단순화 할 수 있습니다. 이미 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);
    }
}

TextViewCompat.setTextAppearance()SDK 버전 확인을 처리하는 방법을 사용하십시오 .

참고 URL : https://stackoverflow.com/questions/16270814/setting-textview-textappeareance-programmatically-in-android

반응형