2013-06-14 4 views
2

Мне нужно создать новую активность в моем проекте, и я хочу показать фотографии. Макет, который я хочу создать, выглядит так.Проблема ориентации макета Android

enter image description here

Все высоты должны иметь свойство "wrap_content".

Какие макеты я должен использовать?

+0

Вы должны понимать, что с помощью «wrap_content» на два верхних решеток не гарантирует равенства их высоты. –

+0

Итак, вы хотите поставить 3 GridLayouts? – dumbfingers

+0

Я не хочу использовать GridLayout, потому что для этого требуется уровень API 14. –

ответ

3

Попробуйте это:

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:orientation="horizontal" > 

     <GridView 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight="66" > 
     </GridView> 

     <GridView 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight="33" > 
     </GridView> 
    </LinearLayout> 

    <GridView 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" > 
    </GridView> 
</LinearLayout> 

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

This is what you're looking for

0

Я думаю, что вы хотите создать StaggeredGridView.

StaggeredGridView - это модифицированная версия экспериментального StaggeredGridView от Android. StaggeredGridView позволяет пользователю создавать GridView с неровными строками, подобными тому, как выглядит Pinterest. Включает собственные OnItemClickListener и OnItemLongClickListener, селектор и исправление фиксированной позиции.

this библиотека.

Надеется, что это помогает :)

0

Рассматривает с использованием TableLayout или GridView и использовать атрибут layout_weight на детях.

Ваш первый ребенок (66%) может иметь вес компоновки 2, второй (33%) макет 1.

Тогда первый ребенок будет занимать 2/3 ширины (66%) а второй ребенок - 1/3, что составляет 33%.

И использовать атрибут layout_span, чтобы развернуть последний вид на двух столбцах.

Например:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:stretchColumns="*" > 

    <TableRow> 

     <TextView 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="2"/> 
    <TextView 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1"/> 
    </TableRow> 

    <TableRow> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_span="2" /> 
    </TableRow> 
</TableLayout> 

Также см that question для объяснения на layout_weight.

0

Почему вы настаиваете на использовании wrap_content? У вас есть «фиксированная» ширина ящиков (66% и 33%). Я уверен, вы можете использовать блоки sp/dp для достижения этого. Конечно, с некоторой настройкой.

Для получения дополнительной информации по этой теме Перейти к http://developer.android.com/guide/practices/screens_support.html и What is the difference between "px", "dp", "dip" and "sp" on Android?

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