2014-02-01 2 views
0

Я прошел через много относительных ответов на stockoverflow и ссылка, такие как Supporting Different Screens или Screen Compatibility Mode
Я создал следующий относительный макет, и я пытаюсь сделать это выглядеть одинаково во все андроиде экранов ,Как сделать свой макет подгонку на все экранах

Мои изображения идеально подходят для телефонов с диагональю 4,8 дюйма, но когда я пытаюсь использовать 2,8-дюймовый дисплей или что-то в этом роде, некоторые кнопки идут поверх других, и они не сжимаются.
Есть ли у кого-нибудь предложения, как улучшить это?
И желательно без увеличения размера моего приложения.

Заранее благодарен!

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:mm="http://millennialmedia.com/android/schema" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/background" 
    tools:context=".MainActivity" > 

    <ImageButton 
     android:id="@+id/Switch_off" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:onClick="someMethod" 
     android:background="@drawable/switch_off"/> 

    <ImageView 
     android:id="@+id/warning_shot" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:background="@drawable/more" 
     android:onClick="someMethod" /> 

    <ImageView 
     android:id="@+id/imageViewBatteryState" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true"   
     android:layout_below="@+id/Switch_off" 

     /> 

    <ImageView 
     android:id="@+id/sh" 
     android:layout_width="147dp" 
     android:layout_height="54dp" 
     android:layout_below="@+id/Switch_off" 
     android:layout_centerHorizontal="true" 
     android:background="@drawable/me"/> 

    <ImageView 
     android:id="@+id/sit" 
     android:layout_width="100dp" 
     android:layout_height="50dp" 
     android:layout_below="@+id/Switch_off" 
     android:layout_centerHorizontal="true" 
     /> 

    <TextView 
     android:id="@+id/textViewBatteryInfo" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textColor="#ffffff" 
     android:textSize="12sp" 
     android:textStyle="bold" 
     android:typeface="monospace" 
     android:layout_alignBottom="@+id/sit" 
     android:layout_centerHorizontal="true"/> 

</RelativeLayout> 
+1

Добавить Scrollview в макете. –

+0

Не могли бы вы показать две фотографии: один с 4,8-дюймовым экраном и один с 2,8-дюймовым экраном? –

+0

«Я создал следующий относительный макет, и я пытаюсь сделать его похожим на всех экранах Android» - это не должно быть вашей целью. Ваша цель должна состоять в том, чтобы иметь полезный интерфейс для всех размеров экрана Android. Для этого может потребоваться несколько версий одного и того же ресурса компоновки, особенно для обработки экранов «-small», таких как 2.8 ». Это распространяется на [первую страницу, на которую вы ссылались] (http://developer.android.com/training/ basics/support-devices/screens.html). – CommonsWare

ответ

1

Я предлагаю вам использовать LinearLayout вместо RelativeLayout специально для выпуска:

Мои изображения подходят идеально подходит для 4,8-дюймовых телефонов, но когда я пытаюсь использовать 2,8 дюймовый дисплей или что-то вроде этого, некоторые кнопки идут сверху других, и они не сжимаются.

Потому что когда вы даете ориентацию к LinearLayout затем ее ребенок никогда не будет друг на друга для любого разрешения или размера экрана.

И если вы дадите им Вес, то виды будут в фиксированном положении для каждого устройства.

Например, поставьте ниже Xml в свой проект и проверьте это в любом разрешении. Он даст тот же результат.

XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:mm="http://millennialmedia.com/android/schema" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    tools:context=".MainActivity" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Button 1" /> 

     <Button 
      android:id="@+id/button2" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Button 2" /> 

     <Button 
      android:id="@+id/button3" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Button 3" /> 
    </LinearLayout> 

</LinearLayout> 
+0

Вы можете поделиться своим сомнением, если у вас есть. –

+0

Can 't заставить его работать в моем коде: /, даже после того, как я добавлю 'weight' и' linearlayout' –

+0

вы можете отправить все изображения, которые вы использовали в приведенном выше xml? Поэтому я могу проверить его. –

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