根据屏幕尺寸调整文本 - Google Nexus 5 示例

Adjusting Text for Screen Sizes - Google Nexus 5 Example

我最近 运行 在 AWS 设备农场进行了一些测试,震惊地发现我的文本大小没有适当缩放。

目前,我的文本大小有不同的文件夹:

values
<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">14dp</dimen>
<dimen name="margin_left">80dp</dimen>
<dimen name="margin_bottom">8dp</dimen>
<dimen name="radio_button_answer_text_size">12dp</dimen>
<dimen name="answer_label_text_size">6dp</dimen>
<dimen name="answer_value_label_text_size">8dp</dimen>
<dimen name="vote_count_label_text_size">11dp</dimen>

values-sw600dp
<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">22dp</dimen>
<dimen name="margin_left">160dp</dimen>
<dimen name="radio_button_answer_text_size">14dp</dimen>
<dimen name="margin_bottom">16dp</dimen>
<dimen name="answer_label_text_size">9dp</dimen>
<dimen name="answer_value_label_text_size">10dp</dimen>
<dimen name="vote_count_label_text_size">13dp</dimen>

values-sw720dp
<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">30dp</dimen>
<dimen name="margin_left">185dp</dimen>
<dimen name="margin_bottom">20dp</dimen>
<dimen name="radio_button_answer_text_size">18dp</dimen>
<dimen name="answer_label_text_size">10dp</dimen>
<dimen name="answer_value_label_text_size">12dp</dimen>
<dimen name="vote_count_label_text_size">14dp</dimen>

在每个文件夹中,我创建了一个 dimens.xml 文件,用于为给定屏幕提取适当的文本大小。

我访问了位于 here 的设备指标网站,发现专门查看了 Google Nexus 5。看来 Nexus 5 在我 运行 我的模拟器之后,正在从我的 sw600dp 文件夹中提取。我不确定为什么,它生成的文本大小我希望在 7" 平板电脑而不是 4.5" 手持设备上看到。

我在 Whosebug 上阅读了无数帖子,但找不到任何方法来正确说明所有设备。我知道有 6"、7"、8"、9" 和 10" 的设备,我想确保我考虑到了每个尺寸。

以下是我的文本如何查找我的 Google Nexus 5,注意我指的是 radio_button_ansewr_text_size 项目:

指定文本大小时,始终使用 sp:

<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp" />

<dimen name="text_size">13sp</dimen>

http://developer.android.com/training/multiscreen/screendensities.html

如果您需要在 java 代码中设置文本大小,请按以下方式进行:

textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);