代码之家  ›  专栏  ›  技术社区  ›  Justin

在Android 1.5上查看与相对布局重叠的视图

  •  4
  • Justin  · 技术社区  · 14 年前

    我有一个问题,在Android 1.5上的相对布局中视图重叠…在Android 1.6及更高版本上一切正常。

    我确实理解Android1.5在相对布局方面存在一些问题,但是我在StackOverflow或Android初学者组中找不到针对我特定问题的任何内容。

    我的布局由四个部分组成,每个部分由一个文本视图、一个库和另一个垂直对齐的文本视图组成:

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

    当这四组项目全部显示时,一切正常。但是,我的应用程序允许用户指定不显示其中一些内容。如果用户关闭了正在运行的应用程序、最近的应用程序或服务,那么其余部分会突然重叠。

    这是我的布局代码。我不知道我做错了什么。当用户关闭分区的显示时,使用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>
    

    我在一次(有些徒劳)尝试中为processes部分修改了XML,以缩短这个时间…

    我该怎么做才能在Android 1.5中工作?我不认为这只是重新排序XML中的视图的问题,因为当所有内容都显示出来时,它可以正常工作。

    1 回复  |  直到 14 年前
        1
  •  4
  •   Yoni Samlan    14 年前

    两种可能的解决方案:

    • 尝试将元素的高度设置为0或1 px,并将可见性设置为不可见而不是不可见。
    • 将每个库/文本视图换行,换行设置为换行高度,并在布局上设置上面/下面的内容,而不是子视图。然后将子元素设置为View.Gone,使用于相对定位的线性布局仍然可见,但换行高度为0。

    任何一种解决方案的想法都是确保你永远不会定位与视图相关的东西。消失了;我怀疑这是你遇到的bug的来源。

    不过,如果我可以问的话…为什么你甚至需要在这里使用相对布局?从我一眼就能看出,这里的所有东西都很适合垂直线性布局,事实上,对于这种布局,概念上似乎更简单。

    推荐文章