我使用此代码将我的文本设置为一个sp更大但是它增加了太多的大小......
public void doThis(MenuItem item){
size = text.getTextSize();
text.setTextSize(TypedValue.COMPLEX_UNIT_SP, (float) (size + 1));
}
我希望它只添加一个sp ...
感谢您的帮助
答案 0 :(得分:1)
因为您获得了像素大小并将其用于转换为sp。首先,您需要将大小转换回sp:
float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity;
float sizeNew = text.getTextSize() / scaledDensity; // obtain current size in sp
sizeNew += 1f; // add 1 sp
text.setTextSize(TypedValue.COMPLEX_UNIT_SP, sizeNew); // set new size in sp
答案 1 :(得分:1)
您从getTextSize();
试试这个:
text.setTextSize(TypedValue.COMPLEX_UNIT_SP, (text.getSize() / getResources().getDisplayMetrics().scaledDensity) + 1);
答案 2 :(得分:0)
您可以使用此功能将像素更改为sp,您可以看到整个线程here
public static float pixelsToSp(Context context, Float px) {
float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity;
return px/scaledDensity;
}