Listview行重叠问题

时间:2010-02-04 16:00:08

标签: android listview layout row

我刚刚更新了我的应用程序,我收到了更新它的人的一些奇怪的抱怨。我只收到非股票Android手机(制造商修改过的手机...... HTC手机,cliq,脉冲等)的投诉,其他手机如Droid,Nexus工作正常。我的应用程序(相框豪华版)有一个列表,其中包含图像视图,文本视图,视图(间隔)和复选框,所有这些都在一行中。在受影响的手机上发生的事情是行开始重叠,它会切断所有内容的上半部分。我的布局代码如下,我正在拉扯我的头发,这个布局可能有什么问题。 为什么这适用于某些手机而不适用于其他手机?任何帮助将不胜感激。

行布局:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
<ImageView
    android:id="@+id/photorowIcon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:paddingRight="5dp"
    />
<TextView
    android:id="@+id/photorowText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    />
<View
    android:layout_width="0px"
    android:layout_height="wrap_content"
    android:layout_weight="1"/>
<CheckBox
    android:id="@+id/photorowCheckBox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:focusable="false"
    android:focusableInTouchMode="false"
    />  
</LinearLayout>

布局行插入:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/title1_gradient"
    android:orientation="vertical">
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Select Photos to Display:"
    android:textSize="20sp"
    android:textStyle="bold"
    android:textColor="#FFFFFFFF"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:paddingTop="5dp"
    />
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/folderName"
    android:textSize="15sp"
    android:textStyle="bold"
    android:textColor="#FFFFFFFF"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:paddingBottom="5dp"
    />
    <View
        android:layout_width="fill_parent"
        android:layout_height="1px"
        android:background="#406C6C6C"/>
    </LinearLayout>
<ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="0px"
    android:layout_weight="1"
    android:drawSelectorOnTop="false"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    />
<LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_gravity="bottom">    
    <LinearLayout 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_gravity="bottom"
            android:background="#FF6C6C6C" 
            android:padding="5dp">
            <Button
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:id="@+id/ok"
                android:text="OK"/>
    </LinearLayout>
</LinearLayout>
</LinearLayout>

3 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。这在2 Verizon Eris和1.5模拟器中很明显。它不会出现在G1(v1.6),moto Droid(2.0.1)或任何模拟器1.6 +

它发生在绑定到ListActivity的ListView中,并且位于垂直方向的LinearLayout中。在这两种情况下,我都在为每个人提供RelativeLayouts,而且我一直在失去他们的顶部

我使用了hierarchyViewer,每个该死的东西都被弄糟了,然后旋转。在将RelativeLayout上的minHeight手动设置为大于显示的内容之后,它终于明白了,问题不仅仅是SIZING,而是SHIFTING .. RelativeLayout中的所有东西都被推到了视图的顶部。

这让我在心理上重温了 sandos的上面的答案:“与引力有关”

在RelativeLayout(列出列表的每一行'),我把:

android:gravity="center_vertical"

这产生了巨大的差异。

现在,我的行仍然在1.5中看起来更窄,但它们是可用的,我可以保留它

答案 1 :(得分:1)

更改ur listView标记属性

android:layout_height="fill_parent"

答案 2 :(得分:0)

我无法确定您的问题,但我知道布局(不幸的是!)可能会在次要版本的Android之间发生变化。我看到了一些问题,从1.5到1.6,特别是列表中的布局。更有问题的是模拟器没有正确模拟这一点,这使得这很难修复。我记得它与重力有关,所以我会玩那个部分。此外,尝试使用RelativeLayout,因为这比嵌套的linearlayout更少资源。

还可以尝试使用SDK,layoutopt和Hiearhcy Viewer中的布局工具。