Проблема перекрытия строк в Listview - PullRequest
0 голосов
/ 04 февраля 2010

Я только что обновил свое приложение и получаю странные жалобы от людей, которые его обновляют. Я только получаю жалобы от людей с нестандартными телефонами Android (телефоны, которые производители изменили ... телефоны HTC, cliq, pulse и т. Д.), Другие телефоны, такие как Droid, Nexus, работают нормально. Мое приложение (Photo Frame Deluxe) содержит список с отображением изображения, просмотра текста, просмотра (разделитель) и флажком - все подряд. То, что происходит на затронутых телефонах, состоит в том, что строки начинают перекрываться, и это отрезает верхнюю половину всего. Мой код макета для этого приведен ниже, я стараюсь изо всех сил, что может быть не так в этом макете. Почему это работает на некоторых телефонах, а не на других? Любая помощь будет оценена.

Расположение строк:

<?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 ]

3 голосов
/ 19 марта 2010

У меня была такая же проблема. Это было заметно на 2 Verizon Eris и на симуляторе 1.5. Это НЕ происходит в G1 (v1.6), мото Droid (2.0.1) или любом симуляторе 1.6 +

Это произошло внутри ListView, привязанного к ListActivity, и в вертикально ориентированном LinearLayout. В обоих случаях я кормил RelativeLayouts для каждого, и я продолжал терять вершины их

Я использовал просмотр иерархии, разбирался с каждой чертовой штукой и вертелся вокруг. Наконец-то меня осенило, после того, как я вручную установил minHeight для RelativeLayout во что-то большее, чем то, что показывало, что проблема была не просто в РАЗМЕРЕ, а в СДВИГЕ. Все в RelativeLayout выталкивалось за верхнюю часть представления. *

Это заставило меня мысленно вернуться ответ Сандоса выше: "что-то связанное с гравитацией"

в RelativeLayout (содержит каждую «строку» списков), я положил:

android:gravity="center_vertical"

это имело огромное значение.

Теперь мои ряды все еще выглядят уже в 1,5, но их можно использовать, и я могу придерживаться этого

1 голос
/ 27 февраля 2010

изменить свой атрибут тега listView

android:layout_height="fill_parent"
0 голосов
/ 04 февраля 2010

Я не смогу точно определить вашу проблему, но я точно знаю, что макеты (к сожалению!) Могут меняться между второстепенными версиями Android. Я видел несколько проблем с переходом от 1.5 до 1.6, особенно с разметкой в ​​списке. Еще более проблематичным был тот факт, что эмулятор не эмулировал это должным образом, что очень трудно исправить. Я помню, что это связано с гравитацией, поэтому я бы поиграл с этой частью. Кроме того, попробуйте использовать RelativeLayout, так как он требует меньше ресурсов, чем вложенные линейные макеты.

Также попробуйте использовать инструменты макета из SDK, layoutopt и Hiearhcy Viewer.

...