Настройка текста для размеров экрана - пример Google Nexus 5
Недавно я провел некоторое тестирование на ферме устройств 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-файл, который я использовал для извлечения соответствующего размера текста для данного экрана.
Я зашел на сайт device metrics, расположенный здесь и обнаружил, что специально смотрел на Google Нексус 5. Похоже, что Nexus 5, после того как я запустил свой эмулятор, тянет из моей папки sw600dp. Я не уверен, почему, и он генерирует размер текста, который я надеюсь увидеть на 7-дюймовом планшете, а не на 4,5-дюймовом портативном устройстве.
Я прочитал бесчисленное количество сообщений на StackOverflow, но не могу найти никакого способа должным образом учитывать все устройства. Я понимаю, что они есть. 6", 7", 8", 9", и 10" устройств, и я хочу убедиться, что я учитываю каждый размер.
Вот как выглядел мой текст мой Google Nexus 5, Обратите внимание, что я имею в виду элемент radio_button_ansewr_text_size:
1 ответ:
При указании размера текста всегда используйте 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);