У меня есть проект Android 2.1 с ListView в LinearLayout. LinearLayout имеет фон, заданный для изображения:
Android: фон = "@вытяжка/фона"
Мое намерение состоит в том, чтобы фон всегда был видимым через любые данные, заполненные на экране. Он работает, по большей части, но я сталкиваюсь с несколькими причудами.
1) В эмуляторе фон заполняет экран, но на моем телефоне это не так. Я вижу крошечную часть вверху, когда приложение запускается, и больше раскрывается, поскольку элементы добавляются в ListView. Я вижу фон за каждой строкой; просто не там, где нет строки. Как мне получить его, чтобы заполнить экран, даже на моем телефоне? Это Droid X, если это имеет значение.
2) В эмуляторе, когда я удерживаю кнопку на строке и перемещаю мышь над другими строками, фон исчезает на выбранных строках. По телефону это тоже происходит. Как я всегда вижу фон?
Вы можете использовать FrameLayout и добавить.
android:scaleType="centerCrop"
, поэтому его масштабирование сохраняет соотношение сторон (layout_width
и layout_height
оба установлены на fill_parent
)layout_width
и layout_height
оба установлены на fill_parent
)Wether вы видите изображение за списком или нет, также зависит от используемого элемента списка.
Также установите атрибут ListView android:cacheColorHint="#00000000"
(прозрачный)
Во-первых, убедитесь, что вы не задали свойство фона ListView
и его элементов.
Задайте свойство подсказки для кеша ListView
на # 000000 (пустое).
Вы можете либо сделать это в xml с помощью android: cacheColorHint = "@color/blank".
Или в вашем коде с помощью ListView.setCacheColorHint(0)
Для первой проблемы, я думаю, вы должны сделать свой список, чтобы заполнить все свободное пространство на экране, чтобы оно максимизировало его высоту, например, android: layout_height = "0dp" и android: layout_weight = "1"
Во втором вопросе вы должны иметь в виду, что когда элемент ListView сфокусирован, он показывает свой цвет по умолчанию. Вы можете использовать селектор в ListItems, чтобы сделать вещи более ясными и лучше.