반응형
Android에서 프로그래밍 방식으로 TextView TextAppeareance 설정
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]);
이렇게 사용하십시오. 작동합니다.
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 버전 확인을 처리하는 방법을 사용하십시오 .
반응형
'developer tip' 카테고리의 다른 글
모든 경우에 5 자리 숫자를 생성하는 JavaScript 표현식 (0) | 2020.12.06 |
---|---|
버퍼를 stream2 Readable 스트림으로 래핑하는 방법은 무엇입니까? (0) | 2020.12.06 |
Universal Apps MessageBox :“ 'MessageBox'라는 이름이 현재 컨텍스트에 없습니다.” (0) | 2020.12.06 |
옵션을 변환하는 방법 (0) | 2020.12.06 |
모든 CALayer의 하위 계층 제거 (0) | 2020.12.06 |