Мне не удалось найти аналогичную проблему с тем, что у меня есть на StackOverflow - в основном, у меня простой XML-макет с вертикальным LinerLayout, который использует layout_weight сделать 10/50/40 раскол, который является то, что я хочу (как показано ниже):RelativeLayout не подчиняется размеру родителя (с layout_weight)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="left"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight=".1"
android:text="@string/title"
android:textColor="@color/black"
android:textStyle="bold" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight=".5"
android:orientation="vertical"
android:background="@color/green">
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="top"
android:fillViewport="true">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" />
</HorizontalScrollView>
<ImageView
android:id="@+id/preview_bg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/level_preview_back"
android:focusable="false" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight=".4"
android:text="@string/title"
android:textColor="@color/black"
android:textStyle="bold" />
</LinearLayout>
НО - Я хочу HorizontalScrollView и ImageView быть наложены (т.е. взять точно такое же место на на верхняя часть другой), поэтому я вставляю RelativeLayout как таковой:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="left"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight=".1"
android:text="@string/title"
android:textColor="@color/black"
android:textStyle="bold" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight=".5"
android:orientation="vertical"
android:background="@color/green">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="top"
android:fillViewport="true">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" />
</HorizontalScrollView>
<ImageView
android:id="@+id/preview_bg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/level_preview_back"
android:focusable="false" />
</RelativeLayout>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight=".4"
android:text="@string/title"
android:textColor="@color/black"
android:textStyle="bold" />
</LinearLayout>
Но когда я сделайте это, layout_weight (10/50/40 split) сломается и одурманен LinearLayout, который теперь содержит RelativeLayout, занимает практически весь экран в превью.
Кто-нибудь испытал эту проблему или знал хорошее обходное решение? Я также попытался заменить LinearLayout на RelativeLayout напрямую, и у меня такая же проблема.
EDIT: Дальнейшее изучение этой проблемы, похоже, больше. Как я уже говорил ниже, мне удалось обойти эту проблему, обернув LinearLayouts вокруг TextViews, хотя я не уверен, почему это сработало. Обновление моего SDK и плагина не помогло (хотя мне это и нужно было делать ...)
Перемещение дальше вместе с моей задачей, я ударил вторую проблему - я реализовал вторую версию перекрытого ScrollView & ImageView (которые были сделаны с помощью FrameLayout, как было предложено Карстеном), но проблемы с макетами начались заново.
Тестирование различных аранжировок, похоже, что проблема очень связана с изображением, которое я использую, которое довольно велико в разрешении. Замена их меньшим изображением исправляет проблемы - похоже, использование больших изображений в ImageViews или в качестве фона LinearLayouts имеет тенденцию разрушать макеты всего экрана.
EDIT # 2: Я действительно загрузил XML на два разных устройства, и он отображает точно так, как должен .... Это, кажется, ошибка с помощью средства просмотра XML Eclipse XML?
(Пожалуйста, простите бедную XML форматирование - XML редактор Затмение Android расстраивает в этой связи ...)
Хм .. Спасибо за ответ. Я действительно вернулся сюда, чтобы опубликовать свой собственный ответ - похоже, если я завершу TextViews в их собственные LinearLayouts и применил layout_weight к LinearLayouts, а не непосредственно к TextViews, тогда он отобразится правильно. Я также проверю, чтобы убедиться, что мой Eclipse обновлен. – Squimon
Кроме того, спасибо за отзыв на FrameLayout - вы правы, они кажутся лучше для тех вещей, которые я пытаюсь достичь. – Squimon