我正在修复一个我之前有人创建的应用程序,并注意到一些奇怪的行为。当我在系统设置中更改字体大小时,我的主菜单上的某些文本大小没有改变。以下是在我的活动中设置文本大小的代码。相关值为 landing_text_size
int height = (int) displayHeight;
int width = (int) displayWidth;
textSize = getApplicationContext().getResources().getDimension(
R.dimen.landing_text_size);
textViewHeight = (int) ((textSize * 2) + 40);
// int separatorHeight = (int) getApplicationContext().getResources()
// .getDimension(R.dimen.landing_grid_margin);
int space = (int) ((getApplicationContext().getResources()
.getDimension(R.dimen.landing_grid_view_space)));
columnWidth = (int) ((height
- ((int) (getApplicationContext().getResources()
.getDimension(R.dimen.landing_header_size)))
- ((int) (getApplicationContext().getResources()
.getDimension(R.dimen.landing_footer_size)))
- (textViewHeight * numberOfRows) - (space * numberOfRows)) / numberOfRows);
gridView = (GridView) findViewById(R.id.gridViewLandingPage);
gridView.setColumnWidth(columnWidth);
initializeGridView();
gridView = (GridView) findViewById(R.id.gridViewLandingPage);
gridView.setColumnWidth(columnWidth);
稍后在代码中设置文本视图的文本大小。
textView.setTextSize(textSize);
我一直在研究在xml文件中建立文本大小的不同方法,并发现了这个问题:What is the difference between "px", "dp", "dip" and "sp" on Android?
显而易见的想法是在我的维度文件中声明我的文本大小时使用sp。问题是,我是。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="landing_image_size">70dp</dimen>
<dimen name="landing_header_size">40dp</dimen>
<dimen name="product_image_size">100dp</dimen>
<dimen name="stories_image_size">91dp</dimen>
<dimen name="landing_footer_size">60dp</dimen>
<dimen name="slide_max_size">140dp</dimen>
<dimen name="tab_size">100dp</dimen>
<dimen name="landing_text_size">7sp</dimen>
<dimen name="landing_grid_view_space">10dp</dimen>
</resources>
当我在系统设置中更改字体大小时,文本大小在我的应用程序中不会改变。我知道我有正确的价值,因为当我改变它时,10 sp文本会变大。该项目正在使用api 4.1.2,与我的手机相同。怎么可能出错?为什么文字大小不变?
答案 0 :(得分:1)
我没有足够的声望点,所以添加作为答案.. 应用程序中的字体大小不会像您在dimens.xml中指定的那样使用该字体大小。如果您将从dimens.xml中删除字体大小,我认为当您增加系统字体大小时字体大小会增加。 / p>