Должен ли я использовать dip, dp, sip или sp для форматирования текста? - PullRequest
2 голосов
/ 23 ноября 2010

Я бы не сказал, что мое приложение имеет большой текст ... но иногда оно отображает случайные строки, которые длиннее других. Они отлично подходят для моего дроида 2, но я знаю, что они не будут отображаться одинаково на меньших дроидах. Кто-нибудь знает правильный способ форматирования текста разного размера, чтобы он работал на всех андроидах?

Ответы [ 3 ]

6 голосов
/ 23 ноября 2010

Если вы просто хотите сделать текст больше или меньше, вам следует использовать стили по умолчанию, предоставляемые Android:

<TextView ... android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView ... android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView ... android:textAppearance="?android:attr/textAppearanceSmall" />

Ни один из них не является значением по умолчанию, по умолчанию:

<TextView ... android:textAppearance="?android:attr/textAppearance" />

Конечно, его можно применять не только к TextView, но и к другим представлениям.

3 голосов
/ 23 ноября 2010

Google рекомендует использовать sp для размеров текста. Используемые макеты должны будут работать, поэтому, когда макет масштабируется, он работает во всех размерах в максимально возможной степени (возможно, вам понадобятся макеты для экрана разных размеров). Если текст может не поместиться, оберните его или сделайте многоточие

0 голосов
/ 13 ноября 2014

SP и DP не работают так, как вы могли бы ожидать.Предполагается, что DP «не зависит от дисплея», а SP описывается как то же самое;но может быть масштабировано (предположительно с помощью команд «масштабирования»).Однако они не работают так, как вы ожидаете.

Например, у меня есть два устройства: телефон 320x480 и Nexus;который 800x1280 НО, который описывает себя как sw600 (я понятия не имею, почему).Чтобы увидеть, что происходит, я добавил текстовое представление в свое представление, которое состоит из 60 символов 'X' (выбрано потому, что они выглядят так же, как и моноширинные).

Для textView textSize было установлено значение 10dp, и60 из них полностью заполняют экран Nexus.Однако на телефоне они выглядят точно одинакового размера и образуют почти две строки.

Итак, кажется, что DP не отображается независимо;но просто описывает (приблизительное) количество пикселей, каждому символу будет дан максимум.Определение размера в SP не имеет значения.

Это не очень полезно - я ожидал, что будет применена некоторая форма масштабирования, чтобы я мог выбрать подходящий размер на своем телефоне, и он будет масштабироваться дляNexus.

Например, если моя строка текста была длиной около тридцати символов, и я хотел, чтобы она заполняла всю строку по экрану, я бы определил ее как 10dp;и каждый дп будет один пиксель (примерно).Затем, когда он был нарисован на Nexus, каждый dp был бы в два пикселя, и он выглядел бы в два раза больше.

Насколько я могу сказать, это не так;что делает его довольно бесполезным.

Мое единственное решение , и оно не изящно, - это использовать измерения только из файла измерения. xml, и иметь шесть из них, один длякаждый из общих значений ширины (240 320 480 180 700 720 - все, что выше, может разобраться сам), затем спроектируйте мой код так, чтобы он соответствовал Nexus, и используйте электронную таблицу, которую я написал, для масштабирования любых значений в dimensions.xml для общих значений ширины.Это боль;но это работает.

Если я не использую это неправильно, система Android просто сломана.

...