Android View проблема фонового макета - PullRequest
0 голосов
/ 08 июня 2011

Я пытаюсь использовать пустой View для указания цвета для каждого элемента в ListView.

Идея состоит в том, что представление rowColor - это просто строка шириной 3dp, которая должна автоматически увеличиваться до высоты secondLine.и thirdLine (обратите внимание, что весь контент устанавливается в коде, включая цвет фона rowColor и что firstLine и thirdLine часто устанавливаются в GONE).

Он отлично отображается в графическом макете Eclipse, но rowColor вообще не отображается на моем телефоне (работает 2.3.3), и все виды сгруппированы.Любая идея, как это исправить?

Следующий код для list_row был взят из здесь .Я предоставил весь код, который, я думаю, работает на основе этого макета, но даже не близко.Работает ли этот макет?

list_row.xml:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">

<TextView
    android:id="@+id/firstLine"

    android:layout_width="fill_parent"
    android:layout_height="wrap_content"

    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"

    android:singleLine="true"
    android:text="First Line" />

<View
    android:id="@+id/rowColor"
    android:background="#FF0000"

    android:layout_width="3dp"
    android:layout_height="fill_parent"

    android:layout_below="@id/firstLine"
    android:layout_alignParentBottom="true" />

<TextView
    android:id="@+id/thirdLine"

    android:layout_width="fill_parent"
    android:layout_height="wrap_content"

    android:layout_toRightOf="@id/rowColor"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"

    android:singleLine="true"
    android:text="Third Line" />

<TextView
    android:id="@+id/secondLine"

    android:layout_width="fill_parent"
    android:layout_height="wrap_content"

    android:layout_toRightOf="@id/rowColor"
    android:layout_alignParentRight="true"
    android:layout_below="@id/firstLine"
    android:layout_above="@id/thirdLine"
    android:layout_alignWithParentIfMissing="true"

    android:gravity="center_vertical"
    android:singleLine="true"
    android:text="Second Line" />
</RelativeLayout>

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
    android:id="@+id/android:list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>
</LinearLayout>

ListViewTest.java Активность здесь: http://pastie.org/2035822

Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2013

Я столкнулся с этим недавно и обнаружил, что View без содержимого, кроме цвета фона, не появится в RelativeLayout.

Если вы можете, попробуйте преобразовать ваш макет в LinearLayout. Кажется, это работает для меня.

0 голосов
/ 08 июня 2011

Я протестировал ваш макет в нескольких эмуляторах (от 2.1 до 2.3.3), и он отлично работает, с настройкой или без установки первой видимости TextView для View.GONE.

Это может быть либо проблема в вашем коде в другом месте, либо сбой вашего конкретного устройства.

В качестве обходного пути вы можете использовать:

android:layout_height="0dp"

для вашего rowColor View. Поскольку вы уже определяете положение верхнего и нижнего пределов с помощью android:layout_below="@id/firstLine" и android:layout_alignParentBottom="true", фактическое значение layout_height не имеет значения.

...