我无法在StackOverflow上找到类似的问题 - 基本上,我有一个简单的XML布局,其中有一个垂直的LinerLayout,它使用layout_weight进行10/50/40分割,是我想要的(如下所示):
<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分割)中断并突然显示现在包含RelativeLayout的LinearLayout几乎占据了预览中的所有屏幕。
任何人都遇到过这个问题或者知道一个好的解决方法吗?我也尝试直接用RelativeLayout替换LinearLayout,我遇到了同样的问题。
编辑:进一步研究这个问题,似乎还有更多内容。正如我在下面评论的那样,我能够通过在TextViews周围包装LinearLayouts来解决这个问题,尽管我不确定为什么会这样。更新我的SDK和插件没有帮助(虽然我确实需要这样做....)
随着我的任务进一步发展,我遇到了第二个问题 - 我正在实施重叠的ScrollView&amp;的第二个版本。 ImageView(使用Karsten建议的FrameLayout完成)但layout_weight问题重新开始。
测试各种安排,似乎问题与我正在使用的图像非常相关,其分辨率非常大。用较小的图像替换它们可以解决问题 - 看起来在ImageViews中使用大图像或者作为LinearLayouts的背景会破坏整个屏幕的布局。
编辑#2:我实际上已经将XML加载到两个不同的设备上,它完全按照它应该呈现......这似乎是Eclipse XML布局查看器的一个错误?
(请原谅可怜的XML格式 - Eclipse Android xml编辑器在这方面令人沮丧......)
答案 0 :(得分:0)
您发布的XML在Eclipse预览中对我来说很好。您是否在运行最新版本的Android插件?
请注意,您可以使用单个FrameLayout替换中间的LinearLayout和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:textStyle="bold" />
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight=".5"
android:background="#00ff00" >
<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="#ff0000"
android:focusable="false" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight=".4"
android:text="string/title2"
android:textStyle="bold" />
</LinearLayout>