设置ListView的背景图像

时间:2012-05-17 14:13:28

标签: java android android-listview

Hey Guys面临在ListView上设置背景图片的问题。代码如下

history.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"
    android:cacheColorHint="#00000000"
    android:layout_weight="1"
    android:drawSelectorOnTop="false"
    android:src="@drawable/back">
    </ListView>

<TextView  android:id="@id/android:empty"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#FFff00"
    android:text="No data"
    android:cacheColorHint="#00000000"
    />
</LinearLayout>

rowlayout.xml

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

<TextView android:id="@+id/ProductName"       
    android:textSize="25sp"         
    android:textColor="#FFFF00"        
    android:layout_width="fill_parent"         
    android:layout_height="wrap_content"
    />

</LinearLayout>

Java代码

...

setListAdapter(new ArrayAdapter<String>(this, R.layout.rowlayout,R.id.ProductName,Names));

...

我不知道我在这里做什么,但背景没有出现。整个黑色。如果我将背景放在rowlayout.xml中的文本视图上,那么它会出现,但它像整个屏幕一样带有ListView的一个条目。尝试了很多教程。也许做一些新手的错误..请帮帮我

4 个答案:

答案 0 :(得分:2)

使用android:background =“@ drawable / icon”作为列表视图,如

 <ListView android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="#00000000"
android:layout_weight="1"
android:drawSelectorOnTop="false"
android:background="@drawable/icon">
</ListView>

答案 1 :(得分:0)

使用android:background =&#34;#00000000&#34;在列表视图项目上,然后将父表单背景设置为您的图像

答案 2 :(得分:0)

正如我正确理解您的代码概念,您希望在View上实现两个LinearLayout,其中一个(在您的情况下为TextView)覆盖布局及其背景和另一个一个是透明的。因此,除了为您的布局设置背景并使用ListView使android:background="#00000000"透明化之外别无他法,您还应该设置android:cacheColorHint="#00000000"以避免填充ListView背景滚动时黑色

答案 3 :(得分:0)

我相信您正在体验的内容在此处描述:http://android-developers.blogspot.com/2009/01/why-is-my-list-black-android.html

由于名为“缓存颜色提示”的优化,列表的背景默认设置为窗口的背景颜色,在Android的黑暗主题中为#191919。

如果你在每一行设置背景,我想你会明白我的意思。尝试设置以下背景形状:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<stroke
    android:color="@color/mid_gray"
    android:width="1dp"
/>

<padding
    android:left="7dp"
    android:top="7dp"
    android:right="7dp"
    android:bottom="3dp"
/>

<corners android:radius="10dp" />

<solid android:color="@android:color/white" />
</shape>
像这样:

<?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"
android:background="@drawable/shape_data_background">

<TextView android:id="@+id/ProductName"       
android:textSize="25sp"         
android:textColor="#FFFF00"        
android:layout_width="fill_parent"         
android:layout_height="wrap_content"
/>

</LinearLayout>