在Android上如何通过窗口上的元素显示背景图像,包​​括ListView?

时间:2011-07-12 19:06:01

标签: android android-listview android-linearlayout

我在LinearLayout中有一个带有ListView的android 2.1项目。 LinearLayout的背景设置为图像:

机器人:背景= “@绘制/背景”

我的意图是通过屏幕上填充的任何数据始终显示背景。它在大多数情况下都有效,但我遇到了几个怪癖。

1)在模拟器中,背景填满了屏幕,但在我的手机上没有。当应用程序启动时,我可以在顶部看到它的一小部分,并且当项目添加到ListView时会显示更多部分。我可以看到每一排背后的背景;只是不在没有排的地方。即使在手机上,如何让它填满屏幕?它是Droid X,如果重要的话。

2)在模拟器中,当我按住一行上的按钮并将鼠标移到其他行上时,背景将消失在所选行上。在电话上,这也发生了。我如何始终看到背景?

3 个答案:

答案 0 :(得分:1)

首先,请确保您没有设置ListView及其项目的背景属性。

ListView的缓存颜色提示属性设置为#000000(空白)。

您可以使用android:cacheColorHint =“@ color / blank”在xml中执行此操作。

或使用ListView.setCacheColorHint(0)

在您的代码中

答案 1 :(得分:1)

您可以使用FrameLayout并添加..

  1. 带有背景的ImageView。使用例如android:scaleType="centerCrop",因此缩放后保持宽高比(layout_widthlayout_height都设置为fill_parent
  2. 您的ListView(layout_widthlayout_height都设置为fill_parent
  3. 您是否看到列表视图后面的图像还取决于您使用的列表视图元素。

    还设置ListView的属性android:cacheColorHint="#00000000"(透明)

答案 2 :(得分:0)

对于第一个问题,我认为您应该使列表视图填满屏幕上的所有可用空间,以便最大化其高度,例如 android:layout_height =“0dp”& android:layout_weight =“1”

对于第二个问题,您应该记住,当ListView的项目被聚焦时,它会显示其默认颜色。您可以在ListItems上使用选择器来使事情更加清晰&更好。