我有一个listView,我需要提供背景颜色来掩盖活动的背景图像。我宁愿在单元格的基础上执行此操作,以便如果listView没有到达屏幕的底部,背景颜色将显示没有更多列表项目要显示的位置。另外,我应该提一下,我将这个ListView放在ImageViews之间使用:
android:layout_above
和
android:layout_below
因此,对于较小的屏幕,ListView将在较低的ImageView顶部正确滚动,而不是在其前面或后面。但是对于较大的屏幕,我希望当没有更多的列表项可以显示时,活动的背景图像可见。
我一直在寻找选择器,这可能是我正在寻找的东西,但据我所知,选择器的颜色将显示在listView的背景颜色后面。
这就是我现在正在尝试的。关于如何完成我想要的任何建议?
item.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:state_focused="true"
android:drawable="@drawable/orange" />
<item android:state_pressed="true"
android:drawable="@drawable/orange" />
<item android:state_focused="true"
android:drawable="@drawable/orange" />
</selector>
下面的activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/gray_lines" >
<ImageView
android:id="@+id/header"
android:layout_width="wrap_content"
android:layout_height="45dp"
android:scaleType="fitXY"
android:src="@drawable/logo_header" />
<!-- Footer aligned to bottom -->
<ImageView
android:id="@+id/footer"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_alignParentBottom="true"
android:scaleType="fitXY"
android:src="@drawable/orange" />
<TextView
android:id="@+id/footerText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginBottom="5dp"
android:layout_marginLeft="14dp"
android:onClick="contactPressed"
android:listSelector="@drawable/item"
android:drawSelectorOnTop="true"
android:text="@string/footerText" />
<ListView
android:id="@+id/mainMenuList"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/header"
android:layout_above="@id/footer"
android:divider="#000000"
android:dividerHeight="0.1dp" />
</RelativeLayout>
这是我的list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/gray" >
<ImageView
android:id="@+id/img"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginRight="15dp"
android:layout_marginTop="20dp"
android:layout_alignParentRight="true" />
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_marginTop="17dp"
android:layout_marginLeft="15dp"
android:textSize="23sp" />
</RelativeLayout>
如下所示,它会创建正确的颜色,但onClick颜色不会显示。
答案 0 :(得分:1)
如果您只想为列表视图设置静态颜色,请将其添加到xml中的listview元素
<ListView android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background = "@drawable/somebgdrawable"
/>
如果要将drawable添加到单元格
然后在list_item.xml
将背景线添加到布局的根视图
如果你的drawable是选择器,那么添加它 它被认可为@drawable
如果您使用列表活动
getListView().setBackground(Drawable d)
如果您在单元格的基础上执行此操作 - &gt;单元格将被覆盖,但如果列表未到达屏幕底部,则活动将在其后面显示(如果您的列表视图是叠加层)
或者你将在其余部分获得一段时间的屏幕
答案 1 :(得分:0)
我的问题的答案很愚蠢。我有选择器位于textview而不是ListView。对错的地方。
<TextView
android:id="@+id/footerText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginBottom="5dp"
android:layout_marginLeft="14dp"
android:onClick="contactPressed"
android:text="@string/footerText" />
<ListView
android:id="@+id/mainMenuList"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/header"
android:layout_above="@id/footer"
android:listSelector="@drawable/item"
android:drawSelectorOnTop="true"
android:divider="#000000"
android:dividerHeight="0.1dp" />