我有一个textview
,在32sp
中的大小为xml
。
android:textSize="32sp"
我想通过编程将其更改为28sp
。所以我用了下面的代码。
txt.setTextSize(TypedValue.COMPLEX_UNIT_SP, getResources().getDimension(R.dimen.twenty_eight_sp));
但是上面的代码将28sp
添加到32sp
。因此,字体变得太大。我不想添加字体大小,我想设置一个新的字体大小。
任何人都可以建议我。
答案 0 :(得分:2)
您必须将其更改为TypedValue.COMPLEX_UNIT_PX
,因为getDimension(id)
从资源中返回一个dimen
值,并隐式转换为px
。
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,
getResources().getDimension(R.dimen.result_font));
答案 1 :(得分:2)
您可以在运行时更改字体大小,如下所示:
text.setTextSize(TypedValue.COMPLEX_UNIT_PX,
getResources().getDimension(R.dimen.result_font));
OR
完整代码,可在运行时更改 TextSize ,以适应任何屏幕尺寸:
text.setTextSize(TypedValue.COMPLEX_UNIT_PX, DetermineTextSize
.determineTextSize(text.getTypeface(),
setTextHeight);
从 DetermineTextSize 类调用的determineTextSize()方法:
DetermineTextSize.class
public class DetermineTextSize {
public static int determineTextSize(Typeface font, float allowableHeight) {
Paint p = new Paint();
p.setTypeface(font);
int size = (int) allowableHeight;
p.setTextSize(size);
float currentHeight = calculateHeight(p.getFontMetrics());
while (size != 0 && (currentHeight) > allowableHeight) {
p.setTextSize(size--);
currentHeight = calculateHeight(p.getFontMetrics());
}
if (size == 0) {
return (int) allowableHeight;
}
return size;
}
private static float calculateHeight(FontMetrics fm) {
return fm.bottom - fm.top;
}
}
答案 2 :(得分:0)
txt.setTextSize(TypedValue.COMPLEX_UNIT_SP,getResources().getDimension(R.dimen.twenty_eight_sp));
答案 3 :(得分:0)
检查此链接 https://developer.android.com/reference/android/widget/TextView#setTextSize(int,%20float)
根据您的要求考虑这两个功能
答案 4 :(得分:0)
尝试一下
public virtual ICollection<Job> Job { get; set; }