Мне нужно создать новую активность в моем проекте, и я хочу показать фотографии. Макет, который я хочу создать, выглядит так.Проблема ориентации макета Android
Все высоты должны иметь свойство "wrap_content".
Какие макеты я должен использовать?
Мне нужно создать новую активность в моем проекте, и я хочу показать фотографии. Макет, который я хочу создать, выглядит так.Проблема ориентации макета Android
Все высоты должны иметь свойство "wrap_content".
Какие макеты я должен использовать?
Попробуйте это:
<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 просто убедитесь, что атрибуты одинаковы.
Я думаю, что вы хотите создать StaggeredGridView.
StaggeredGridView - это модифицированная версия экспериментального StaggeredGridView от Android. StaggeredGridView позволяет пользователю создавать GridView с неровными строками, подобными тому, как выглядит Pinterest. Включает собственные OnItemClickListener и OnItemLongClickListener, селектор и исправление фиксированной позиции.
this библиотека.
Надеется, что это помогает :)
Рассматривает с использованием 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.
Почему вы настаиваете на использовании 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?
Вы должны понимать, что с помощью «wrap_content» на два верхних решеток не гарантирует равенства их высоты. –
Итак, вы хотите поставить 3 GridLayouts? – dumbfingers
Я не хочу использовать GridLayout, потому что для этого требуется уровень API 14. –