Разный размер текста для разных аппаратных средств
У меня есть текстовый макет редактирования, как показано ниже, и я хочу знать, есть ли способ предоставить ему другой размер для разных аппаратных средств в зависимости от размера экрана? Для экранов ниже 4 дюймов я хочу дать ниже расположение
<EditText
android:id="@+id/entry"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/editbox_background"
android:textColor="#800080"
android:text=""
android:hint=" No Operator Precednce yet"
android:cursorVisible="false"
android:textSize="40dip"
/>
а затем для других
<EditText
android:id="@+id/entry"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/editbox_background"
android:textColor="#800080"
android:text=""
android:hint=" No Operator Precednce yet"
android:cursorVisible="false"
android:textSize="30dip"
/>
Ответы
Ответ 1
Создать папки в /res для
раскладка
layout-small
layout-normal
layout-large
layout-xlarge
затем создайте файл макета для каждого макета, Android выберет правильный во время выполнения.
так что вы можете изменить полный макет для каждого размера экрана.
Если вы действительно хотите установить размер, вы можете создать эти папки
значения
values-small
values-normal
values-large
values-xlarge
затем поместите измерение .xml в каждую из этих папок следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="textSizeLarge">22dp</dimen>
</resources>
просто измените значение (22 dp) в каждом XML файле.
затем замените свое значение на
android:textSize="@dimen/textSizeLarge"
Очень хорошая документация:http://developer.android.com/guide/practices/screens_support.html
Ответ 2
EDIT - лучший способ сделать это - определить размеры текста в виде размера и варьировать размеры в зависимости от того, какое оборудование вы используете, добавив разные значения в файл dimens.xml в разных dpi (ldpi, mdpi, hdpi и т.д.).
Старый (правильный, но не большой) ответ
2 способа сделать это:
-
Удалить определение из XML и программно установить размер текста
((EditText) findViewById(R.id.entry)).setTextSize(TypedValue.COMPLEX_UNIT_DIP, 40)
-
реализовать различные макеты для разных размеров экрана - это будет связано с тем, что вы пишете новый макет xml для каждого из разных размеров экрана вы поддерживаете в своем приложении.
Ответ 3
Если вы используете <dimen>
зависимым от конфигурации образом, вы переопределите размер по умолчанию для всех устройств (22dp для меньшего, 40dp для более крупных устройств). Если вы хотите оставить textSize по умолчанию для более мелких устройств и только переопределить его для более крупных устройств, вы можете использовать стили:
RES/значения/styles.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="EditText" />
</resources>
RES/значение-большой/styles.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="EditText" >
<item name="android:textSize">40sp</item>
</style>
</resources>
И в макете:
<TextView style="@style/EditText" ... />
Этот способ textSize
остается нетронутым для меньших устройств, и используется значение по умолчанию из текущей темы.