코드 및 리소스에서 TextView 글꼴 크기를 설정할 때 불일치
공식 문서는 이 대답을하지 않는 것, 또는 나는 그것을 알아낼 수 없습니다.
요소 (는 신경 쓰지 마십시오. AlertDialog
TextView에서도 발생합니다) :
TextView tv = (TextView) dialog.findViewById(android.R.id.message);
불일치. 사례 A :
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
// or tv.setTextSize(14); does the same
사례 B :
tv.setTextSize(getResources().getDimension(R.dimen.text_size_small));
// TypedValue makes no difference either.
어디에 있습니까 values/dimens.xml
?
<dimen name="text_size_small">14sp</dimen>
결과 : 글꼴 크기가 동일하지 않고 리소스에서 검색 할 때 훨씬 더 크게 나타납니다. 아마도 뭔가 빠졌을 것입니다. 그래서 내 실수는 무엇이며, 가장 중요한 것은 왜입니까?
- 첫 번째 답변 업데이트 -
고정 된 숫자는 코드에 고정 된 글꼴 크기를 하드 코딩하는 사람이 없기 때문에 단지 예일뿐입니다. 그래서 질문을 다시 말하겠습니다.
코드에서 리소스를 가져 오는 경우 XML 레이아웃에서 리소스를 가져올 때보 다 텍스트 크기가 더 큰 이유는 무엇입니까? 게다가 질문은 여전히 동일합니다. 코드에서 14sp 단위를 검색하고 레이아웃 XML에 설정된 14sp 단위와 일관성을 유지하려면 어떻게해야합니까? 텍스트 크기에 대한 코드의 리소스에서 sp 단위를 사용하는 방법을 알려주지 않기 때문에 대답을 수락하지 않았습니다.
이 레이아웃에서는 치수가 동일하더라도 글꼴 크기가 다릅니다.
<TextView
android:id="@+id/my_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextBody" />
styles.xml :
<style name="TextBody">
<item name="android:textSize">@dimen/text_size_small</item>
<item name="android:lineSpacingMultiplier">1.1</item>
<item name="android:textColor">@color/body_text_1</item>
<item name="android:textIsSelectable">true</item>
<item name="android:linksClickable">true</item>
</style>
거기 text_size_small이 보이십니까? 이 경우 동일한 dimen
리소스를 사용하여 글꼴 크기가 코드보다 작은 이유는 무엇 입니까?
메서드 setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
의 설명서에 내가 미리 계산 된 절대 px 값으로 이해하는를 getDimension
반환한다고 나와 있기 때문에 사용해야 Resource dimension value multiplied by the appropriate metric.
합니다.
즉, 다음을 사용하십시오.
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.text_size_small));
어떻게 든 이것이 맞는 것 같습니다.
XML :
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="typo14">9sp</dimen>
</resources>
자바:
setTextSize(TypedValue.COMPLEX_UNIT_SP, 9);
setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize(R.dimen.typo14));
그것의 문제 sp
px
dpi
tv.setTextSize(14) = 14 pixels
'programing' 카테고리의 다른 글
데이터 프레임을 벡터로 변환 (행별) (0) | 2020.11.27 |
---|---|
자바 스크립트를 사용하여 한 페이지에서 다른 페이지로 이동하는 방법은 무엇입니까? (0) | 2020.11.27 |
오른쪽 클릭이 비활성화되었을 때 크롬의 요소를 어떻게 검사 할 수 있습니까? (0) | 2020.11.27 |
설치 후 WinMerge를 TortoiseSvn과 통합하는 방법은 무엇입니까? (0) | 2020.11.27 |
MySQL 테이블 생성 날짜는 어떻게 알 수 있습니까? (0) | 2020.11.27 |