我正在创建一个textview并动态添加到布局.我正在使用textView.setTextSize(18)方法设置文本大小.我在三星平板电脑上测试了它,发现字体尺寸对于这个屏幕来说太小了,然后我将文本大小更改为25但是它对于模拟器来说太大了(480*800).我的问题是动态设置文本大小,使其适合所有屏幕.
MKJ*_*ekh 270
编辑:当我在StackOverflow上搜索时,我发现此问题重复:此和此
你需要使用另一个功能setTextSize(unit, size),SP像这样,
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18f);
请阅读更多TypedValue常量.
ble*_*enm 160
您应该使用资源文件夹,例如
values-ldpi
values-mdpi
values-hdpi
并在'dimensions.xml'文件中为每个范围写入文本大小.
在java代码中,您可以使用设置文本大小
textView.setTextSize(getResources().getDimension(R.dimen.textsize));
示例dimensions.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="textsize">15sp</dimen>
</resources>
Jus*_*ean 66
在这种情况下ldpi,可能不需要使用mdpi或hdpi限定符.
在资源文件中定义维时,包括测量单位.如果使用sp单位,则根据屏幕密度进行缩放,因此15sp处的文本在不同密度的屏幕上应显示大致相同的大小.
(设备的实际屏幕密度不会完全匹配,因为Android会将屏幕密度120, 160, 240, 320, 480 and 640 dpi分组.)
调用getResources().getDimension(R.dimen.textsize)它时将返回以像素为单位的大小.如果使用sp,它将按屏幕密度缩放,
调用setText(float)设置大小sp units.这就是问题所在,
即你一方面有像素测量,另一方面sp unit要修复这样做:
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,
    getResources().getDimension(R.dimen.textsize));
注意你也可以使用
getResources().getDimensionPixelSize(R.dimen.textSize);
而不是,getDimension()它将舍入并转换为非小数值.
Nag*_*ddy 41
经过很长时间的打击,终于解决了这个问题
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,
              getResources().getDimension(R.dimen.textsize));
res/values/dimens.xml像这样创建文件夹res/values/dimens.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <dimen name="textsize">8sp</dimen>
 </resources>
| 归档时间: | 
 | 
| 查看次数: | 232121 次 | 
| 最近记录: |