2010-04-04 84 views
4

我在Android 1.5上的RelativeLayout中出现视图重叠的问题...在Android 1.6及更高版本上,一切正常。Android 1.5上的RelativeLayout与视图重叠

我明白Android 1.5有一些与RelativeLayout相关的问题,但我无法在StackOverflow或Android初学者组中找到任何有关我的特定问题的信息。

我的布局由四个部分组成,其中的每一个都是由一个TextView,一个画廊,和另一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> 

我ommitted在一个(有点徒劳的)尝试进程部分XML保持这个短...

我能做些什么才能在Android 1.5中实现这个功能?我不认为这只是在xml中对视图进行重新排序的问题,因为在显示所有内容时它可以正常工作。

回答

4

两个可能的解决方案:

  • 尝试元素的高度为0或1 PX和知名度设置为不可见,而不是消失。
  • 将LinearLayout中的每个图库/文本视图设置为wrap_height,并在布局上设置上方/下方而不是子视图。然后将子元素设置为View.GONE,留下用于相对定位的线性布局仍然可见,但是包装高度为0.

这两种解决方案的想法都是确保您永远不会定位相对于这是View.GONE;我怀疑这是你遇到的错误的来源。

如果我可能会问,虽然......为什么你甚至需要在这里使用RelativeLayout呢?从我一眼就能看到的情况来看,这里的所有东西都可以很好地适用于垂直LinearLayout,事实上这种安排在概念上似乎更简单。

+0

感谢您的建议...我会给他们一个尝试。 这是我对纵向模式的布局...使用横向模式会变得更复杂一些,并且需要几个嵌套的LinearLayout。虽然我可以在纵向模式下使用LinearLayout,但对于横向模式仍然存在相同的问题。 – Justin 2010-04-04 20:01:44