Подтвердить что ты не робот

Разный размер текста для разных аппаратных средств

У меня есть текстовый макет редактирования, как показано ниже, и я хочу знать, есть ли способ предоставить ему другой размер для разных аппаратных средств в зависимости от размера экрана? Для экранов ниже 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"

 />
4b9b3361

Ответ 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 остается нетронутым для меньших устройств, и используется значение по умолчанию из текущей темы.