android 设置listview item选中背景色

listview是android常用的控件,点击listview item时,默认显示橘黄色的背景色,而且翻滚时也显示相应的颜色。这样往往会跟实际的软件UI设计风格很不协调。通过对listview背景颜色的设置,从而实现与软件UI风格相协调。

改变listview背景选项往往采用建立一个xml文件,如listview_bg.xml,里面定义selector的相关属性,将文件放着drawable的资源文件当资源文件使用,在listview item配置背景属性android:background=”@drawable/listview_bg”从而达到改变背景颜色的目的。

可是问题在于android:background=”@drawable/listview_bg”属性的设置是一个drawable资源文件,就是说listview_bg.xml配置drawable需要对应一个图片之类的资源文件,可是需求当中往往只需要颜色代码而不是图片资源。这个时候需要在listview_bg.xml配置drawable时,通过引用一个颜色的资源文件,即android:drawable=”@color/white”,这样就不需要引用类似android:drawable=”@drawable/image”这样的图片文件了。

以下是相关的代码文件。

listview_bg.xml(背景色状态设置)

view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 没有焦点时的背景颜色 -->
<item android:state_window_focused="false"
android:drawable="@color/unfocused" />
<!-- 非触摸模式下获得焦点并单击时的背景颜色 -->
<item android:state_focused="true" android:state_pressed="true"
android:drawable="@color/pressed" />
<!--触摸模式下单击时的背景颜色  -->
<item android:state_focused="false" android:state_pressed="true"
android:drawable="@color/white" />
<!--选中时的背景颜色  -->
<item android:state_selected="true"  android:drawable="@color/selected" />
<!--获得焦点时的背景  颜色-->
<item android:state_focused="true" android:drawable="@color/focused" />
</selector>  

color.xml(颜色配置文件)

view plaincopy to clipboardprint?

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <color name="white">#ffffffff</color>
  4. <color name="unfocused">#cccccccc</color>
  5. <color name="pressed">#fff22fff</color>
  6. <color name="selected">#fff33fff</color>
  7. <color name="focused">#ffff44ff</color>
  8. </resources>

item.xml(listview Item选项布局文件)

view plaincopy to clipboardprint?

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!--  items选项 -->
  3. <RelativeLayout
  4. android:id="@+id/RelativeLayout"
  5. android:layout_width="fill_parent"
  6. xmlns:android="http://schemas.android.com/apk/res/android"
  7. android:layout_height="wrap_content"
  8. android:paddingBottom="4dip"
  9. android:paddingLeft="12dip"
  10. android:paddingRight="12dip"
  11. android:background="@drawable/listview_bg"
  12. >
  13. <ImageView
  14. android:paddingTop="22dip"
  15. android:layout_alignParentRight="true"
  16. android:layout_width="wrap_content"
  17. android:layout_height="wrap_content"
  18. android:id="@+id/more_image"
  19. />
  20. <TextView
  21. android:layout_height="wrap_content"
  22. android:textSize="18dip"
  23. android:layout_width="fill_parent"
  24. android:id="@+id/title"
  25. android:paddingTop="6dip"
  26. />
  27. <TextView
  28. android:text=""
  29. android:layout_height="wrap_content"
  30. android:layout_width="fill_parent"
  31. android:layout_below="@+id/title"
  32. android:id="@+id/date"
  33. android:paddingRight="20dip"
  34. />
  35. </RelativeLayout>

main.xml(listview文件)

view plaincopy to clipboardprint?

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <ListView android:layout_width="wrap_content"
  8. android:layout_height="wrap_content"
  9. android:divider="@color/white"
  10. android:dividerHeight="1dip"
  11. android:id="@+id/list_items"
  12. />
  13. </LinearLayout>

SelectorActivity.java(java源码文件)

view plaincopy to clipboardprint?

  1. package com.test.main;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import android.app.Activity;
  5. import android.os.Bundle;
  6. import android.widget.ListView;
  7. import android.widget.SimpleAdapter;
  8. public class SelectorActivity extends Activity {
  9. /** Called when the activity is first created. */
  10. @Override
  11. public void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.main);
  14. ListView list=(ListView) findViewById(R.id.list_items);
  15. ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();
  16. String []title={"Apple","Google","Facebook"};
  17. String []date={"2-12","5-16","9-12"};
  18. for (int i = 0; i < 3; i++)
  19. {
  20. HashMap<String, Object> map = new HashMap<String, Object>();
  21. map.put("more_image", R.drawable.more);// 图像资源的ID
  22. map.put("title", title[i]);
  23. map.put("date", date[i]);
  24. listItem.add(map);
  25. }
  26. // 数据源
  27. SimpleAdapter listItemAdapter= new SimpleAdapter(SelectorActivity.this, listItem,
  28. R.layout.item,// ListItem的XML实现
  29. // 动态数组与ImageItem对应的子项
  30. new String[] { "more_image", "title", "date" },
  31. // XML文件里面的一个ImageView,两个TextView ID
  32. new int[] { R.id.more_image, R.id.title,
  33. R.id.date });
  34. list.setAdapter(listItemAdapter);
  35. }
  36. }

最后效果图

图-1 点击时的背景颜色

图-2 翻滚时的背景颜色

时间: 2024-10-05 23:50:19

android 设置listview item选中背景色的相关文章

Android设置ListView分隔线边距

Use 'inset'..... (list_divider.xml) <?xml version="1.0" encoding="UTF-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:insetLeft="50dp" android:insetRight="50dp" >

android 修改listview item view 的方法(转)

android 修改listview item view 的方法 具体的解答办法很简单: 代码如下 : 1.获取需要更新的view int visiblePosition = mListView.getFirstVisiblePosition(); View view = mListView.getChildAt(position - visiblePosition); mListView.getAdapter().getView(position, view, mListView); 2.通过

android中设置ListView的选中的Item的背景颜色

ListView中没有默认的选择颜色,只有选择Item后的焦点颜色,鼠标点击时Item有颜色,放开鼠标后颜色也就没有了,要实现放开鼠标后选择项的背景还是有颜色的. 1.配置main.xml Java代码   <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

Android 设置ListView当前显示的item

项目中可能会有这种需求:动态设置ListView显示的item 这种需求可能会出现在不同的情况下,有的是打开页面就要显示在特定的位置,也有的是浏览列表时实时更新数据并且改变了集合中数据,或者是某种条件触发而改变显示的位置,我遇到的就是第二种. 先说说我的情况: 用ListView展示数据,当上拉或下拉刷新时会增加集合中数据的数量,但是考虑如果item太多可能会太占资源,于是我就控制了一下集合的长度,每次刷新后如果size超过最大值时我就会从集合中移除一部分数据,但是当我在刷新adapter时问题

Android 设置ListView不可滚动 及在ScrollView中不可滚动的设置

http://m.blog.csdn.net/blog/yusewuhen/43706169 转载请注明出处: http://blog.csdn.net/androiddevelop/article/details/38815493 希望得到的效果是ListView不能滚动,但是最大的问题在与ListView Item还必有点击事件,如果不需要点击事件那就简单了,直接设置ListView.setEnable(false); 如果还需要点击事件,滚动与点击都是在ListView Touch处理机制

Android 原生listview item伸展收缩效果 (续)

接上一个原生的listview item的伸展收缩效果. 上一个可能做的有些粗糙,效果也没有这个好,上代码. package com.example.listviewdemo; import java.io.Serializable; /** * 模拟数据包月列表item实体类 * 2015/11/10 * @author * */ public class PurchasedVipInfo implements Serializable { private static final long

android 修改listview item view 的方法

具体的解答办法很简单: 代码如下 : 1.获取需要更新的view int visiblePosition = mListView.getFirstVisiblePosition(); View view = mListView.getChildAt(position - visiblePosition); mListView.getAdapter().getView(position, view, mListView); 2.通过view,然后可以进行更新操作. TextView tvStatu

android设置listview的item颜色相间排列

// viewHolder复用了item,持有的position是会随着listView的滑动变化的 // if ((viewHolder.getPosition() + 1) % 2 == 0) { // int color = Color.argb(255, 101, 181, 109); // viewHolder.getConvertView().setBackgroundColor(color); // } else { // int color = Color.argb(255, 2

(Android)listview android:cacheColorHint,android:listSelector属性作用 .

1.滚动Listview的时候,会出现黑色底色的情况,破坏整体美观度.     android:cacheColorHint=“#00000000”就可以解决该问题. 2.另外,Android选中的item默认为橙黄底色,有时候需要去掉这种效果,或者设置自定义的选中背景色.     android:listSelector属性,可以设置你自定义的选中背景图.例如android:listSelector="#00000000".