2015-02-03 3 views
2

это мой первый вопрос на StackOverflow =)Android Студия макета w600dp не работает на ландшафтном Nexus 5

Я использую Android Studio 1.0.2 (верхнее обновление), и я хочу, чтобы создать макет сетки, что имеет один столбец на портрете Nexus 5 и два на ландшафте Nexus 5. Nexus 5 - 640 x 360 dp, поэтому у меня есть три папки «layout» и «layout-w600dp» и «layout-w600dp-land» (чтобы быть уверенным).

Мой "fragment_main.xml" в папке "макета" выглядит следующим образом:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity$PlaceholderFragment"> 
    <GridView 
     android:id="@+id/gridview_products" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:numColumns="1"/> 
</FrameLayout>  

В "топологий w600dp" и "макет-w600dp-земля" папки с той лишь разницей

android:numColumns="2" 

В Android Studio показано, что используется «layout-w600dp-land». Экран находится здесь: https://pp.vk.me/c625530/v625530960/19a4d/G7irG51csn8.jpg И на реальном устройстве, когда я поворачиваю экран, он не делает двух столбцов. Экран находится здесь: https://pp.vk.me/c625530/v625530960/19a57/mmCdluXWSQw.jpg

Что может вызвать эту проблему?

+0

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

+0

Это тот же фрагмент, что и в Android Studio, он не заполнен данными, поэтому он просто показывает «Item1, Sub item 1» и onCreateView. Я заполняю его данными с помощью настраиваемого ArrayAdapter. –

ответ

2

Вы можете просто переименовать «layout-w600dp» в «layout-w595dp», и он будет работать на Nexus 5. Чтобы получить более отзывчивый дизайн, вы также можете создавать макеты с более чем двумя колонками для больших экранов.

+2

Спасибо. Это решило мою проблему. Вы сделали мой день =) –

+0

Подробнее см. Контент Просмотр размера: http://www.emirweb.com/ScreenDeviceStatistics.php#Header248 – user802421

+0

Может ли кто-нибудь объяснить это? Я надеялся, что вы сможете пройти по [показателям устройств Google] (https://design.google.com/devices/), но это явно недостаточно. Хуже того, размер содержимого выглядит по-разному: 1) уровень API и 2) ориентация. – sidecarcat

0

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

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/grid1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:padding="10dp" 
     android:numColumns="2" 
     android:columnWidth="100dp" 
     android:horizontalSpacing="10dp" 
     android:verticalSpacing="10dp"  
     android:gravity="center" 
     android:background="@android:color/transparent" 
     android:stretchMode="columnWidth" > 

</GridView> 

При необходимости можно также использовать андроида: numColumns = «auto_fit», чтобы он создать столько столбцов, сколько возможно размера ColumnWidth.

+0

И если я хочу, чтобы columnWidth составлял половину экрана устройства, а не жесткий код? –

+0

columnWidth = "0dp", а затем добавить android: layout_weight = "2". Обратите внимание, что вы можете установить либо columnWidth, либо columnHeight в 0dp, но не оба одновременно. Тогда layout_weight работает с одним, установленным в «0dp». –