2013-01-21 2 views
2

Я тестировал большинство своих макетов на Galaxy 5 Media Player, а макеты все смотрели, как я их создаю в обычной папке layout. Я использую SDK 10, так что я не использую папки типа layout-sw600dp, вместо этого я использую /layout, /layout-large и т.д.Мой макет на устройствах с большим экраном не соответствует просмотру большого экрана

Хотя мои макеты выглядят хорошо на Galaxy 5 игрока, когда я попробовал их на другое устройство, которое будет использованный, Lenovo Ideapad A1, вид был не прав. Я создал новый xml-файл в /layout-large для 7-дюймового планшета, но теперь то, что находится на предварительном просмотре, не соответствует тому, что на моем устройстве.

Я использую RelativeLayout, ничего в нем не было, кроме 8 кнопок. объявляются совмещена с нижней, то каждая следующая кнопка расположена над одной под ним, с множеством в marginBottom параметра

Это файл XML для исходного зрения:.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/v2" 
    android:gravity="center_horizontal" 
    android:orientation="vertical" > 

    <Button 
     android:id="@+id/exitButton" 
     android:layout_width="350dp" 
     android:layout_height="60dp" 
     android:layout_marginBottom="36dp" 
     android:layout_alignParentBottom="true" 
     android:textColor="@android:color/white" 
     android:background="@drawable/sel_button_round" 
     android:text="@string/main_exit" /> 

    <Button 
     android:id="@+id/findDeviceButton" 
     android:layout_width="350dp" 
     android:layout_height="60dp" 
     android:layout_marginBottom="18dp" 
     android:layout_above="@id/exitButton" 
     android:textColor="@android:color/white" 
     android:background="@drawable/sel_button_round" 
     android:text="@string/main_find_device" /> 

    <Button 
     android:id="@+id/cebusButton" 
     android:layout_width="350dp" 
     android:layout_height="60dp" 
     android:layout_marginBottom="18dp" 
     android:layout_above="@id/findDeviceButton" 
     android:textColor="@android:color/white" 
     android:background="@drawable/sel_button_round" 
     android:text="@string/main_cebus" /> 

    <Button 
     android:id="@+id/operationsButton" 
     android:layout_width="350dp" 
     android:layout_height="60dp" 
     android:layout_marginBottom="18dp" 
     android:layout_above="@id/cebusButton" 
     android:textColor="@android:color/white" 
     android:background="@drawable/sel_button_round" 
     android:text="@string/main_operations" /> 

    <Button 
     android:id="@+id/monitorButton" 
     android:layout_width="350dp" 
     android:layout_height="60dp" 
     android:layout_marginBottom="18dp" 
     android:layout_above="@id/operationsButton" 
     android:textColor="@android:color/white" 
     android:background="@drawable/sel_button_round" 
     android:text="@string/main_monitor" /> 

    <Button 
     android:id="@+id/wavesButton" 
     android:layout_width="350dp" 
     android:layout_height="60dp" 
     android:layout_marginBottom="18dp" 
     android:layout_above="@id/monitorButton" 
     android:textColor="@android:color/white" 
     android:background="@drawable/sel_button_round" 
     android:text="@string/main_waves" /> 

    <Button 
     android:id="@+id/statusButton" 
     android:layout_width="350dp" 
     android:layout_height="60dp" 
     android:layout_marginBottom="18dp" 
     android:layout_above="@id/wavesButton" 
     android:textColor="@android:color/white" 
     android:background="@drawable/sel_button_round" 
     android:text="@string/main_status" /> 

    <Button 
     android:id="@+id/more_parametersButton" 
     android:layout_width="350dp" 
     android:layout_height="60dp" 
     android:layout_marginBottom="18dp" 
     android:layout_above="@id/statusButton" 
     android:textColor="@android:color/white" 
     android:background="@drawable/sel_button_round" 
     android:text="@string/main_parameters" /> 

</RelativeLayout> 

при запуске этого на моем 7-дюймовом устройстве кнопки ОГРОМНЫ и проходят мимо верхней части экрана. Однако при предварительном просмотре его в Eclipse кнопки все прекрасно подходят на экране. Почему предварительный просмотр показывает мне другое мнение, чем то, что я ожидаю?

EDIT:

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

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/v2" 
    android:gravity="center_horizontal" 
    android:orientation="vertical" > 

    <Button 
     android:id="@+id/exitButton" 
     android:layout_width="300dp" 
     android:layout_height="50dp" 
     android:layout_marginBottom="30dp" 
     android:layout_alignParentBottom="true" 
     android:textColor="@android:color/white" 
     android:background="@drawable/sel_button_round" 
     android:text="@string/main_exit" /> 

    <Button 
     android:id="@+id/findDeviceButton" 
     android:layout_width="300dp" 
     android:layout_height="50dp" 
     android:layout_marginBottom="15dp" 
     android:layout_above="@id/exitButton" 
     android:textColor="@android:color/white" 
     android:background="@drawable/sel_button_round" 
     android:text="@string/main_find_device" /> 

    <Button 
     android:id="@+id/cebusButton" 
     android:layout_width="300dp" 
     android:layout_height="50dp" 
     android:layout_marginBottom="15dp" 
     android:layout_above="@id/findDeviceButton" 
     android:textColor="@android:color/white" 
     android:background="@drawable/sel_button_round" 
     android:text="@string/main_cebus" /> 

    <Button 
     android:id="@+id/operationsButton" 
     android:layout_width="300dp" 
     android:layout_height="50dp" 
     android:layout_marginBottom="15dp" 
     android:layout_above="@id/cebusButton" 
     android:textColor="@android:color/white" 
     android:background="@drawable/sel_button_round" 
     android:text="@string/main_operations" /> 

    <Button 
     android:id="@+id/monitorButton" 
     android:layout_width="300dp" 
     android:layout_height="50dp" 
     android:layout_marginBottom="15dp" 
     android:layout_above="@id/operationsButton" 
     android:textColor="@android:color/white" 
     android:background="@drawable/sel_button_round" 
     android:text="@string/main_monitor" /> 

    <Button 
     android:id="@+id/wavesButton" 
     android:layout_width="300dp" 
     android:layout_height="50dp" 
     android:layout_marginBottom="15dp" 
     android:layout_above="@id/monitorButton" 
     android:textColor="@android:color/white" 
     android:background="@drawable/sel_button_round" 
     android:text="@string/main_waves" /> 

    <Button 
     android:id="@+id/statusButton" 
     android:layout_width="300dp" 
     android:layout_height="50dp" 
     android:layout_marginBottom="15dp" 
     android:layout_above="@id/wavesButton" 
     android:textColor="@android:color/white" 
     android:background="@drawable/sel_button_round" 
     android:text="@string/main_status" /> 

    <Button 
     android:id="@+id/more_parametersButton" 
     android:layout_width="300dp" 
     android:layout_height="50dp" 
     android:layout_marginBottom="15dp" 
     android:layout_above="@id/statusButton" 
     android:textColor="@android:color/white" 
     android:background="@drawable/sel_button_round" 
     android:text="@string/main_parameters" /> 

</RelativeLayout> 

ответ

4

Я думаю, что его не ваш макет совместимости экрана проверки проблема

Если ваше приложение совместимо только с небольшими и нормальными экранами, независимо от плотности экрана, то вы должны указать восемь различных элементов, поскольку каждый размер экрана имеет четыре различных конфигураций плотности

<compatible-screens> 
<screen android:screenSize=["small" | "normal" | "large" | "xlarge"] 
     android:screenDensity=["ldpi" | "mdpi" | "hdpi" | "xhdpi"] /> 
... 

Для получения дополнительной информации посетите эту LINK

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

Использование wrap_content, fill_parent или Dp единиц при определении размеров в файле макета XML

  1. не используйте жестко закодированные значения пикселов в коде приложения

  2. не используйте AbsoluteLayout (это не рекомендуется)

  3. Поставка Альтернативы растровых вводимые коэффициента для различных плотностей экрана

Андроида системы помогает приложению добиться независимостей плотности в двух направлениях:

  1. Системы шкалы дп единицы в зависимости от обстоятельств для текущего экрана плотность

  2. Система масштабирует ресурс до нужного размера, основываясь на на текущем экране densit у, при необходимости

Для получения дополнительной информации посетите этот LINK