호출 TextView.setTextSize()
이 비정상적으로 작동합니다. 호출 직후에 우리가 이전에 설정 한 것보다 훨씬 더 높은 값을 반환하는 setTextSize
경우 getTextSize
.
우리가하는 일은 다음과 같습니다.
zoomControl.setOnZoomInClickListener(new OnClickListener() {
public void onClick(View view) {
float size = mViewShabad.getTextSize() + 1;
textView.setTextSize(size);
}
});
전에 본 사람이 있습니까?
답변
여기서 차이점은 setTextSize(int size)
방법에서 단위 유형은 기본적으로 “sp”또는 “스케일 된 픽셀”이라는 것입니다. 이 값은 각 화면 밀도 (ldpi, mdpi, hdpi)에 대해 다른 픽셀 치수가됩니다.
getTextSize()
반면에는 텍스트의 실제 픽셀 크기를 반환합니다.
setTextSize(int unit, float size)
단위 유형을 지정하는 데 사용할 수 있습니다 . 이에 대한 상수 값은 TypedValue 클래스에서 찾을 수 있지만 일부는 다음과 같습니다.
TypedValue.COMPLEX_UNIT_PX //Pixels
TypedValue.COMPLEX_UNIT_SP //Scaled Pixels
TypedValue.COMPLEX_UNIT_DIP //Device Independent Pixels
답변
이 문제는 getTextSize()
메서드가 화면 밀도에 따라 픽셀 단위로 크기를 반환 하기 때문에 발생했습니다 ! 실제 TextSize를 얻으려면 다음을 사용하십시오.
DisplayMetrics metrics;
metrics = getApplicationContext().getResources().getDisplayMetrics();
float Textsize =myTextView.getTextSize()/metrics.density;
myTextView.setTextSize(Textsize+1);
나는 그것을 해결하기를 바랍니다 🙂
답변
설정 변경 글꼴 크기, 뭔가 표시 오류가 발생하면 다음과 같이 할 수 있습니다.
setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15.f);
답변
getTextSize ()로 프로그래밍 문제를 설정하려고 할 때 sp / dp / dip 대신 px로 값을 반환하고 1sp / dp = 1.5px (화면 크기 = 240)을 알고 있습니다.
titleBar.setTextSize(TypedValue.COMPLEX_UNIT_SP, (getResources().getDimension(R.dimen.text_size)*1.5f));
나를 위해 완벽하게 작동하거나 displaymatrix 대 px : sp / dp 비율을 사용한 다음 해당 값을 1.5f로 바꿀 수 있습니다.
means-> titleBar.setTextSize(TypedValue.COMPLEX_UNIT_SP, (getResources().getDimension(R.dimen.text_size)*your_sp_and_px_ratio_in_int f));
답변
오랜만에 치고 마침내 이렇게 해결
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,
getResources().getDimension(R.dimen.textsize));
res / values / dimensions.xml과 같은 차원 폴더를 만듭니다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="textsize">8sp</dimen>
</resources>
답변
간단히 말해서 텍스트 크기를 축소하려면
float size = mViewShabad.getTextSize()*1.1f;
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
getTextSize ()는 UNIT_PX를 반환하므로 UNIT_PX를 사용해야합니다.
답변
Kotlin 솔루션
리소스를 사용하여 설정하려면 다음을 사용하십시오.
textView.setTextSize(COMPLEX_UNIT_PX, textView.resources.getDimension(R.dimen.my_text_size))
리소스 값으로 동일한 작업을 수행하려면이 확장 속성을 추가하여 텍스트 크기를 훨씬 더 쉽게 설정합니다.
textView.textSizeRes = R.dimen.my_text_size
var TextView.textSizeRes
get() = textSize.toInt()
set(@DimenRes textSizeRes) {
setTextSize(COMPLEX_UNIT_PX, resources.getDimension(textSizeRes))
}