2014-07-03 2 views
0

Так как у меня есть Nexus 5, я вижу странные вещи в отношении размеров текста.размеры текста разные телефоны Android

Пример: Я создаю элементы списка. Я поставил более крупный текст на 22sp, меньший на 17sp.

На моем HTC One X это выглядит следующим образом:

enter image description here

Так что я думаю, что "хорошо, это хорошо!"

Затем я запустить его на моем Nexus 5:

enter image description here

Я не понимаю, почему это происходит? Не следует ли «sp» убедиться, что он будет выглядеть нормально со значениями по умолчанию? Я не говорю о том, что пользователь увеличивает размер шрифта в настройках, я оставил все по умолчанию.

Возможно, если бы я (не ударил меня), используйте здесь DP, чтобы отключить изменения размера шрифта для текста, он даст тот же результат (не проверен, но я вполне уверен, что это относится к другим тестам).

В чем проблема? Это новая версия Android, или это 1080p экран против 720p?

Должен ли я использовать разные значения для разных DP, используя папку «values»?

здесь де раскладка:

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="80dp" 
    android:orientation="horizontal"> 

    <LinearLayout 
     android:id="@+id/background" 
     android:layout_marginTop="10dp" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal"> 

     <com.android.volley.toolbox.NetworkImageView 
      android:id="@+id/image" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:adjustViewBounds="true" 
      android:scaleType="centerCrop" /> 

     <RelativeLayout 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_margin="5dp" 
      android:layout_weight="2"> 

      <ImageView 
       android:id="@+id/arrow" 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:layout_alignParentRight="true" 
       android:adjustViewBounds="true" /> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_margin="3dp" 
       android:layout_toLeftOf="@id/arrow" 
       android:gravity="center" 
       android:orientation="vertical"> 

       <TextView 
        android:id="@+id/name" 
        android:layout_width="match_parent" 
        android:layout_height="0dp" 
        android:layout_weight="1" 
        android:fontFamily="sans-serif-condensed" 
        android:textSize="22sp" 
        android:textStyle="bold" /> 

       <TextView 
        android:id="@+id/address" 
        android:layout_width="match_parent" 
        android:layout_height="0dp" 
        android:layout_weight="1" 
        android:textSize="17sp" /> 
      </LinearLayout> 
     </RelativeLayout> 
    </LinearLayout> 
</LinearLayout> 

ответ

1

Например, размер по умолчанию то же значение SP может изменяться в зависимости от устройства, так, чтобы соответствовать его читаемости, предназначенной для устройства.

Проблема заключается в том, что у вас есть элементы размером до фиксированного размера, размещайте свой XML-код, который вы используете для строки, и мы можем сделать глубокий анализ.

Edit - После того, как XML

Ну, вместо точки вы обиды, я предпочитаю, чтобы восстановить свое расположение, посмотрите:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="10dp" 
    android:orientation="horizontal" > 

    <com.android.volley.toolbox.NetworkImageView 
     android:id="@+id/image" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" /> 

    <TextView 
     android:id="@+id/name" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/image" 
     android:layout_toLeftOf="@+id/arrow" 
     android:fontFamily="sans-serif-condensed" 
     android:textSize="22sp" 
     android:textStyle="bold" /> 

    <TextView 
     android:id="@+id/address" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/image" 
     android:layout_toLeftOf="@id/arrow" 
     android:layout_below="@id/name" 
     android:textSize="17sp" /> 

    <ImageView 
     android:id="@id/arrow" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_alignParentRight="true" /> 
</RelativeLayout> 

Ваш макет был слишком сложным для простой строки ... теперь макет будет таким же высоким, как и TextViews, и это не проблема, поскольку пользователь уже использует его размер текста.

+0

добавлен макет. Я ожидаю, что «маржа» станет причиной – Boy

+0

Я действительно пытался избежать относительных макетов, потому что я думал, что это будет стоить дороже, чем при использовании линейных макетов. – Boy

+1

LinearLayouts бывают быстрыми, если вы не используете вес, в противном случае это стало довольно дорого. –

0

Вы должны создать две разные папки макета и посмотреть результат

+0

Не очень важно, если вы создадите действительно перемасштабируемый макет, и даже если вы хотите указать по размеру, я бы предложил вам использовать указанные стили вместо макетов. –

Смежные вопросы