TextView
Java 코드를 사용하여 특정 텍스트 크기를 변경하기 위해 정수 값을 할당하면 값이 픽셀 ( px
) 로 해석됩니다 .
이제 누구나 그것을 할당하는 방법을 알고 sp
있습니까?
TextView
Java 코드를 사용하여 특정 텍스트 크기를 변경하기 위해 정수 값을 할당하면 값이 픽셀 ( px
) 로 해석됩니다 .
이제 누구나 그것을 할당하는 방법을 알고 sp
있습니까?
답변:
http://developer.android.com/reference/android/widget/TextView.html#setTextSize%28int,%20float%29
예:
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 65);
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.my_text_size_in_sp));
이 방법으로 텍스트 크기를 가져 오면 화면 밀도와 텍스트 배율을 모두 고려하여 SP를 PX로 변환합니다.
속성DisplayMetrics
을 사용하여 객체를 사용하여 픽셀과 크기 조정 된 픽셀 간을 변환 할 수 있습니다 .scaledDensity
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
pixelSize = (int)scaledPixelSize * dm.scaledDensity;
may be adjusted in smaller increments at runtime based on a user preference for the font size
글꼴 크기 가 고려됩니다.
소스 코드를 기반으로 setTextSize
:
public void setTextSize(int unit, float size) {
Context c = getContext();
Resources r;
if (c == null)
r = Resources.getSystem();
else
r = c.getResources();
setRawTextSize(TypedValue.applyDimension(
unit, size, r.getDisplayMetrics()));
}
픽셀에 대한 디멘션을 계산하기 위해이 기능을 작성합니다.
int getPixels(int unit, float size) {
DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
return (int)TypedValue.applyDimension(unit, size, metrics);
}
단위는 다음과 같습니다 TypedValue.COMPLEX_UNIT_SP
.
@John Leehey와 @PeterH에게 감사드립니다 :
desiredSp = getResources().getDimension(R.dimen.desired_sp);
density = getResources().getDisplayMetrics().density;
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, desiredSp / density);
dimen.xml에서 R.dimen.desired_sp를 25로 정의하면 문제가 발생합니다.
허용 된 답변이 작동하지 않는 경우 (예 : 페인트를 처리 할 때) 다음을 사용할 수 있습니다.
float spTextSize = 12;
float textSize = spTextSize * getResources().getDisplayMetrics().scaledDensity;
textPaint.setTextSize(textSize);
semeTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX,
context.getResources().getDimension(R.dimen.text_size_in_dp))
COMPLEX_UNIT_PX
밀도를 나누어야합니다.
API 레벨 1에서이 public void setTextSize (float size)
방법을 사용할 수 있습니다 .
설명서에서 :
기본 텍스트 크기를 "스케일 된 픽셀"단위로 해석되는 지정된 값으로 설정하십시오. 이 크기는 현재 밀도 및 사용자 글꼴 크기 기본 설정에 따라 조정됩니다.
매개 변수 : size-> float : 크기가 조정 된 픽셀 크기입니다.
그래서 당신은 간단하게 할 수 있습니다 :
textView.setTextSize(12); // your size in sp