`

ListItem更改背景色

阅读更多

ListItem更改背景色,可能不是很好,但能达到效果,点击、长按、方向键选中都会保留背景色:
1、listView控件
       <ListView
android:id="@+id/contact_listview"
android:layout_width="wrap_content"
android:layout_height="400dip"
android:divider="#b9b9b9"
android:dividerHeight="1px"
android:cacheColorHint="#00000000"
android:listSelector="@drawable/list_selector"
android:headerDividersEnabled="true">
</ListView>

2、在drawable文件夹中见一个list_selector.xml文件,不用写什么内容,只是用来把系统自带的给覆盖掉。
   <?xml version="1.0" encoding="UTF-8"?>
   <selector xmlns:android="http://schemas.android.com/apk/res/android">

   </selector>

3、在values文件夹中新建一个colors.xml文件,用来写颜色值:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="list_item_focus">#626fcd</color>
</resources>

4、在java文件里定义一个私有变量private View itemView;用来保存上一次选中的listitem。

5、在下面三种事件中改变背景色
        //listview的itme选中事件
private OnItemSelectedListener itemSelectedListener = new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
itemBackChanged(arg1);
position = arg2;
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
};

        //长按事件
private OnItemLongClickListener itemLongClickListener = new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
itemBackChanged(view);
ContactGrpMemActivity.this.position = position;
return false;
}
};

//listview的item点击事件
private OnItemClickListener itemClicklistener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Log.i(TAG, "**************onItemClick arg0 is " + arg0.getClass().getName());
Log.i(TAG, "**************onItemClick arg1 is " + arg1.getId());
Log.i(TAG, "**************onItemClick arg2 is " + arg2);
Log.i(TAG, "**************onItemClick arg3 is " + arg3);
itemBackChanged(arg1);
position = arg2;
}
};


//改变listitem的背景色
private void itemBackChanged(View view) {
                //改变当前点击的listitem中textview的字体颜色
TextView contactName = (TextView)view.findViewById(R.id.contactName);
TextView contactTel = (TextView)view.findViewById(R.id.contactTel);
contactName.setTextColor(Color.WHITE);
contactTel.setTextColor(Color.WHITE);

if(itemView == null) itemView = view;
if(itemView != view) {
                       //改变上次点击点击的listitem中textview的字体颜色
contactName = (TextView)itemView.findViewById(R.id.contactName);
contactTel = (TextView)itemView.findViewById(R.id.contactTel);
contactName.setTextColor(Color.BLACK);
contactTel.setTextColor(Color.BLACK);
}

itemView.setBackgroundColor(android.R.color.transparent);//将上次点击的listitem的背景色设置成透明
view.setBackgroundResource(R.color.list_item_focus);//设置当前点击的listitem的背景色
itemView = view;
}

6、如果是图片的话,第三部可以跳过,第5步中view.setBackgroundResource(R.color.list_item_focus)改成view.setBackgroundResource(R.drawable.select_bar);就行了

分享到:
评论

相关推荐

    ListBox控件设置不同的背景色

    - **交互式效果**:当鼠标悬停在列表项上时,可以改变背景色以提供反馈,增强用户体验。 通过以上分析,我们可以看到通过简单的代码就可以实现对`ListBox`控件背景色的有效管理,进而提升整体的用户体验。

    Duilib中 ListItem布局切换效果实现

    例如,当鼠标点击某个ListItem时,可以修改该Item的背景色、文字颜色或者添加动画效果,使其看起来被选中;当鼠标经过时,可以显示不同的提示信息或改变Item的边框样式。 实现布局切换的关键步骤如下: 1. **创建...

    ListCtrl设置单元格颜色

    在wxPython中,你可以使用`SetItemBackgroundColour`方法来改变特定单元格的背景颜色。这个方法需要两个参数:一个是行号,另一个是列号。例如: ```python # 假设list_ctrl是已经创建的ListCtrl对象 list_ctrl....

    Android ListView的item背景色设置和item点击无响应的解决方法

    首先,我们来看如何改变ListView item的背景色和按下时的颜色。默认情况下,ListView item的背景颜色是黑色,点击时变为黄色。要实现自定义颜色,通常有以下三种方法: 1. **设置listSelector**: 在Android的资源...

    自定义listview 圆角listviewitem 处理 选中背景处理

    然而,为了提升用户体验和界面美观,我们经常需要对ListView进行定制,比如让ListView的每一项(ListItem)具有圆角效果,或者在选中时改变背景。本文将深入探讨如何实现自定义的圆角ListView项以及处理选中背景。 ...

    Listview控件常用方法.docx

    10. BackColor:返回或设置 Listview 控件的背景颜色。 11. ForeColor:返回或设置 Listview 控件中文本的颜色。 12. BorderStyle:返回或设置 Listview 控件的边框样式。 13. Font:设置字体、字号和粗细。颜色...

    Delphi列表视图组件(TListView)简单实例

    7. **视图模式切换**:TListView的ViewStyle属性可以设置为vsIcon、vsReport、vsSmallIcon等,以改变显示方式。每种模式下,显示的数据和布局都会有所不同。 8. **复选框支持**:通过设置TListView的Checkboxes属性...

    ASP.NET 中的Dropdownlist 的应用

    此外,可以通过CSS样式来定制DropdownList的外观,包括字体、颜色、大小等。 5. **多选功能** 默认情况下,DropdownList只允许单选,但通过设置`SelectionMode`属性为`Multiple`,可以启用多选功能。此时,用户...

    Asp.net实现的彩色下拉框源码

    这包括背景色、字体色、高亮色等。 三、代码实现 1. 在ASPX页面(如Default.aspx)中,添加DropDownList控件,并设置ID属性,以便在后台代码中引用。 ```asp &lt;!-- 下拉选项数据将在这里填充 --&gt; ``` 2. 在...

    单一价格网格组件:FrontendMentor.io提出的新手布局挑战,以构建定价组件

    按钮变换:在鼠标悬停时将其向上移动,在单击时(活动状态)将其向下移动,并更改背景颜色; 页脚中的样式链接:添加了漂亮的颜色来标记这些链接和浅灰色下划线,链接的浅背景色以及悬停时的蓝色边框颜色。建筑项目...

    ListView 实用技巧

    这里的代码是在`ItemDataBound`事件中添加了`onmouseover`和`onmouseout`两个属性,分别用于在鼠标悬停时改变背景色和移除鼠标时恢复原来的背景色。这种方法简单有效,可以在不增加额外负担的情况下改善用户体验。 ...

    itextsharp学习心得及常用案例分析

    此外,还可以通过`setBackground(Color color)`方法改变Chunk的背景色,以达到更丰富的视觉效果。 短句(Phrases)是由多个Chunk组成的集合,它们之间有一定的间距。每个短句可以有一个主字体,但短句内的Chunk可以有...

    ASP.NET AJAX入门系列:使用UpdatePanel控件

    在这个例子中,当用户更改下拉列表的选择时,`DropDownList`触发器会激活,进而触发UpdatePanel的局部更新机制,更新`&lt;div&gt;`内的背景颜色。 #### 四、ContentTemplateContainer属性 `ContentTemplateContainer`...

    javascript解决IE6下hover问题的方法.docx

    例如,如果希望在鼠标悬停时改变 `&lt;li&gt;` 标签的文字颜色或字体粗细,IE6 会忽略这些样式变化,导致用户体验不一致。 #### 解决方案 为了解决 IE6 下的 `:hover` 问题,可以采用 JavaScript 来模拟这一行为。下面是...

    ajax--updatepanel使用说明

    在这个例子中,当用户在下拉列表中选择不同的颜色时,日历的背景颜色会实时改变,而无需整个页面刷新。 四、ContentTemplateContainer属性 除了ContentTemplate外,`ContentTemplateContainer`属性允许开发者通过...

    ListView实现单选多选.zip

    - 使用Selector资源,可以在不同的状态下(如按下、选中、正常等)为ListView的项定义不同的背景色和形状。 11. **ListView的性能优化**: - 由于ListView可能包含大量数据,因此性能优化至关重要。这包括使用...

    简易android音乐播放器.doc

    在这个例子中,`ListView`(`datalist`)用于显示歌曲列表,通过`android:cacheColorHint`属性设置缓存颜色为透明,以避免滚动时的颜色闪烁。 3. **自定义Adapter**: - 为了将数据绑定到`ListView`,通常需要创建一...

    Bootstrap-3-Tutorial-71---Disabled-List-Items:以下视频教程的代码

    而`list-group-item`则是列表项的基础样式,添加`disabled`类后,列表项的背景色会变暗,文字颜色会变淡,以此来表示其禁用状态。 在JavaScript环境中,如果你想在用户交互时动态地禁用或启用列表项,可以利用...

    C#精髓-- GridView 72般绝技

    **知识点**:实现当鼠标悬停在GridView的某一行时,改变该行的背景颜色。 - **方法一**:使用CSS来实现。 - 示例代码:定义CSS样式。 ```css .hoverRow { background-color: #F5F5F5; } ``` - 添加...

Global site tag (gtag.js) - Google Analytics