sin*_*spk 115 android textview
通话TextView.setTextSize()工作异常.在调用之后,setTextSize如果我们得到一个getTextSize更高的值,那就是我们之前设置它的值.
这是我们正在做的事情:
zoomControl.setOnZoomInClickListener(new OnClickListener() {
public void onClick(View view) {
float size = mViewShabad.getTextSize() + 1;
textView.setTextSize(size);
}
});
Run Code Online (Sandbox Code Playgroud)
谁看过这个吗?
kco*_*ock 348
这里的区别在于,在该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
Run Code Online (Sandbox Code Playgroud)
小智 17
这个问题发生的原因是该getTextSize()方法以像素为单位返回大小取决于屏幕密度!获取Actual TextSize使用此:
DisplayMetrics metrics;
metrics = getApplicationContext().getResources().getDisplayMetrics();
float Textsize =myTextView.getTextSize()/metrics.density;
myTextView.setTextSize(Textsize+1);
Run Code Online (Sandbox Code Playgroud)
我希望它解决它:)
小智 7
如果设置更改字体大小,导致显示错误,您可以这样做:
setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15.f);
Run Code Online (Sandbox Code Playgroud)
小智 6
当我们尝试以编程方式 setText() 时, getTextSize() 出现问题,返回以 px 为单位的值而不是 sp/dp/dip ,并且我们知道 1sp/dp=1.5px(屏幕尺寸 =240)。
titleBar.setTextSize(TypedValue.COMPLEX_UNIT_SP, (getResources().getDimension(R.dimen.text_size)*1.5f));
Run Code Online (Sandbox Code Playgroud)
对我来说效果很好,或者我们可以使用 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));
Run Code Online (Sandbox Code Playgroud)
经过很长时间的打击,终于像这样解决了
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,
getResources().getDimension(R.dimen.textsize));
Run Code Online (Sandbox Code Playgroud)
创建像这样的尺寸文件夹 res/values/dimensions.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="textsize">8sp</dimen>
</resources>
Run Code Online (Sandbox Code Playgroud)