我正在尝试为几种不同的屏幕尺寸设置文字大小和比例。我已在Android Studio中使用以下文件夹设置我的应用程序:
值>梦诗
values-sw320dp>梦诗
值 - sw480dp>梦诗
values-sw600dp>梦诗
values-sw720dp>梦诗
我在AWS Device Farm上测试了我的应用程序,并注意到一些问题。特别是,我正在比较Samsung Galaxy Avant和Samsung Galaxy S6。每个设备都在单独的Android版本上运行,而S6具有更高的分辨率。但是,这些设备的物理尺寸接近相同(手持电话)。
我使用以下方法动态设置文字大小:
xAxis.setTextSize(getResources().getDimension(R.dimen.answer_label_text_size));
但是,我注意到在每台设备上,尽管两台设备都在3sp的sw320dp文件夹中拉出了尺寸,但尺寸却大不相同(answer_label_text_size)。
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="fab_margin">16dp</dimen>
<dimen name="center_indentation">80dp</dimen>
<dimen name="poll_question_text_size">14sp</dimen>
<dimen name="margin_left">80dp</dimen>
<dimen name="margin_bottom">8dp</dimen>
<dimen name="radio_button_answer_text_size">16sp</dimen>
**<dimen name="answer_label_text_size">3sp</dimen>**
<dimen name="answer_value_label_text_size">8dp</dimen>
<dimen name="vote_count_label_text_size_lower_right">17sp</dimen>
</resources>
三星Galaxy Avant(参考&#34;测试答案&#34;左侧标签):
三星Galaxy S6在一天结束时,我如何确保具有相似物理尺寸的设备呈现相同的文字大小?
答案 0 :(得分:1)
而不是使用
xAxis.setTextSize(getResources().getDimension(R.dimen.answer_label_text_size));
您可以将其更改为
xAxis.setTextSize(TypedValue.COMPLEX_UNIT_SP, getResources().getDimension(R.dimen.answer_label_text_size));
答案 1 :(得分:1)
这也让我疯狂。我的启动画面有一个图像,可以使用ImageView的layout.xml参数根据设备分辨率和物理大小进行适当调整。但是,当我在其下面放置一个textview作为标题时,textSize不会随屏幕缩放,因此在不同的设备上看起来非常不同。 (微小的低分辨率大屏幕和大屏幕高分辨率小屏幕)
我找到了一种补偿方法:
int density=metrics.densityDpi;
int screenWidth = metrics.widthPixels;
int screenHeight = metrics.heightPixels;
//.../
TextView coverText = (TextView) findViewById(R.id.selectText);
int txtRes = (int) (10*(screenWidth/density));
coverText.setTextSize(txtRes);
这为我提供了一个缩放的文本标题,在大型低密度屏幕和小型高密度屏幕上看起来相同。
这很有效。唯一的问题是我的初始大小(在这种情况下为10)是通过反复试验选择的,并且在不同的设备上进行了一些编译和调试。
希望它可以帮助别人。