在Android 1.5上查看与RelativeLayout的重叠

时间:2010-04-04 18:05:38

标签: android overlap relativelayout

我在Android 1.5上的RelativeLayout中遇到问题重叠...在Android 1.6及更高版本上一切正常。

我确实知道Android 1.5在RelativeLayout上有一些问题,但我无法在StackOverflow或android初学者组中找到任何针对我特定问题的内容。

我的布局由四个部分组成,每个部分由TextView,Gallery和另一个垂直对齐的TextView组成:

运行应用程序
最近的应用
服务
流程

当显示所有这四个项目时,一切正常。但是,我的应用程序允许用户指定其中一些不显示。如果用户关闭“正在运行的应用程序,最近的应用程序”或“服务”,则其余部分会突然重叠。

这是我的布局代码。我不确定我做错了什么。当用户关闭部分的显示时,我使用View.GONE可见性设置:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_vertical"
    android:layout_gravity="center_vertical"
    android:background="@null"
>
<!-- Running Gallery View Items -->
<TextView 
    style="@style/TitleText"
    android:id="@+id/running_gallery_title_text_id"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="left"
    android:paddingLeft="1sp"
    android:paddingRight="10sp"
    android:text="@string/running_title"
/>

<Gallery
    android:id="@+id/running_gallery_id"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/running_gallery_title_text_id"
    android:spacing="5sp"
    android:clipChildren="false"
    android:clipToPadding="false"
    android:unselectedAlpha=".5"
/>

<TextView 
    style="@style/SubTitleText"
    android:id="@+id/running_gallery_current_text_id"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/running_gallery_id"
    android:gravity="center_horizontal"
/>

<!-- Recent Gallery View Items -->
<TextView 
    style="@style/TitleText"
    android:id="@+id/recent_gallery_title_text_id"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/running_gallery_current_text_id"
    android:gravity="left"
    android:paddingLeft="1sp"
    android:paddingRight="10sp"
    android:text="@string/recent_title"
/>

<Gallery
    android:id="@+id/recent_gallery_id"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/recent_gallery_title_text_id"
    android:spacing="5sp"
    android:clipChildren="false"
    android:clipToPadding="false"
    android:unselectedAlpha=".5"
/>

<TextView 
    style="@style/SubTitleText"
    android:id="@+id/recent_gallery_current_text_id"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/recent_gallery_id"
    android:gravity="center_horizontal"
/>

<!-- Service Gallery View Items -->
<TextView 
    style="@style/TitleText"
    android:id="@+id/service_gallery_title_text_id"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/recent_gallery_current_text_id"
    android:gravity="left"
    android:paddingLeft="1sp"
    android:paddingRight="10sp"
    android:text="@string/service_title"
/>

<Gallery
    android:id="@+id/service_gallery_id"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/service_gallery_title_text_id"
    android:spacing="5sp"
    android:clipChildren="false"
    android:clipToPadding="false"
    android:unselectedAlpha=".5"
/>

<TextView 
    style="@style/SubTitleText"
    android:id="@+id/service_gallery_current_text_id"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/service_gallery_id"
    android:gravity="center_horizontal"
/>
</RelativeLayout>

我省略了进程部分的xml(有点徒劳)试图让它更短......

如何在Android 1.5中完成此工作?我不认为这只是重新排序xml中的视图的问题,因为它在显示所有内容时都能正常工作。

1 个答案:

答案 0 :(得分:4)

两种可能的解决方案:

  • 尝试将元素的高度设置为0或1像素,并将可见性设置为INVISIBLE而不是GONE。
  • 将LinearLayout中的每个Gallery / TextView设置为wrap_height,并在布局而不是子视图上设置上/下。然后将子元素设置为View.GONE,使用于相对定位的线性布局仍然可见,但包裹高度为0.

使用任一解决方案的想法是确保您永远不会相对于View.GONE的视图定位某些内容;我怀疑这是你遇到的bug的来源。

如果我可以问,虽然......为什么你甚至需要在这里使用RelativeLayout?从我所看到的一目了然,这里的所有内容都可以很好地融入垂直的LinearLayout,事实上,这种安排似乎在概念上更简单。