如何改变 FMX listview改变item颜色 颜色

Listview.Subitem.BackColor.ForeColor改变字体颜色和背景 - chuncn - 博客园
随笔 - 661, 文章 - 1, 评论 - 143, 引用 - 3
注意事项:
&&&&&&& 一定要把listview的OwnerDraw属性设置为True(默认是False)。&&&&&& 当设置OwnerDraw = True后,FullRowSelect 、HideSelection 属性好象实效了。
&&&&&& 添加DrawColumnHeader事件,绘制列标头用。&&&&&&& &&&&&& 添加DrawSubItem事件,绘子项头用。
代码如下:
&&&&&&& private void lvKeyPerson_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)&&&&&&& {&&&&&&&&&&& e.DrawBackground();&&&&&&&&&&& e.DrawText();&&&&&&& }&&&&&&& private void lvKeyPerson_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)&&&&&&& {&&&&&&&&&&& e.DrawBackground();&&&&&&&&&&& //判断Subitem中是否存在关键字&&&&&&&&&&& if (txtContent.Text.Trim().Length & 0 && e.SubItem.Text.IndexOf(txtContent.Text.Trim()) &= 0)&&&&&&&&&&& {&&&&&&&&&&&&&&& e.SubItem.BackColor = Color.P& //设置背景色为粉红色&&&&&&&&&&& }&&&&&&&&&&& else&&&&&&&&&&& {&&&&&&&&&&&&&&& e.SubItem.ForeColor = Color.B //设置字体为红色&&&&&&&&&&& }
&&&&&&&&&&& e.DrawText();&&&&&&& }android listView 改变选中行的 背景颜色,字体颜色,和 图片_百度知道
android listView 改变选中行的 背景颜色,字体颜色,和 图片
提问者采纳
种情况用selector吧setTextColor删掉修改tuijian_building_listview_rowxml文件外层background属性设置android:background=&@color/list_item_bg_selector&tvTJCustomNametvTJCustomPhonetextColor属性设置android:textColor=&@color/text_color_selector&res目录,新建color文件夹面创建list_item_bg_selector.xml文件text_color_selector.xml文件除颜色值其内容(颜色值我随便写根据需要效自改)&?xml&version=&1.0&&encoding=&utf-8&?&&selector&xmlns:android=&&&&&!--选颜色--&&&&&item&android:state_selected=&true&&android:color=&#333333&&/&&&&&!--获焦点颜色--&&&&&item&android:state_focused=&true&&android:color=&#333333&&/&&&&&!--点击颜色--&&&&&item&android:state_pressed=&true&&android:color=&#333333&&/&&&&&!--&默认颜色&--&&&&&item&android:color=&#66666&/&&/selector&要修改背景图片同异关于selector详细说明请自行百度
android:background=&@color/bg_color& 上面图片有点问题。 这样。要抱错
不好意思,android:background报错是我的写法有问题,改成&&&&item&android:state_selected=&true&&android:drawable=&#333333&&/&&&&&!--获得焦点时的颜色--&&&&&item&android:state_focused=&true&&android:drawable=&#333333&&/&&&&&!--点击时的颜色--&&&&&item&android:state_pressed=&true&&android:drawable=&#333333&&/&&&&&!--&默认颜色&--&&&&&item&android:drawable=&#666666&/&就可以了。后来我研究了一下,用selector改ListView的背景是很方便的,在listview的xml布局中设置android:listSelector属性就行,但字体颜色我试了几种方法都有问题,最后还是用的if判断解决了,附上Demo,只供参考。PS:你图上的那种效果用的是ListView + RadioButton,我也试了,不过在单选问题上也是用if判断搞定的,感觉还有更好的写法,所以就不发出来了
提问者评价
其他类似问题
为您推荐:
字体颜色的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁怎么实现在点击listview的时候 改变它的背景颜色和图片?_百度知道
怎么实现在点击listview的时候 改变它的背景颜色和图片?
提问者采纳
创建listview需要adaptergetView面处理加载布局文件selector写布局文件
查看原帖&&
其他类似问题
为您推荐:
listview的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁需要说明的是,在正常默认情况下都是选择Item橙黄色,点击Item橙黄色,但是如果你设置了Item整体布局的背景色 android:background="#000000"则,你的上面两个都会不起作用,导致你selected了Item看不出来是否选择了。
那如何改橙黄色为绿色呢?????
step1:list_item.xml中的代码:
&?xml version="1.0" encoding="utf-8"?&&LinearLayout xmlns:android="/apk/res/android"&&& android:layout_width="fill_parent"&&& android:layout_height="45dp"&&& android:orientation="vertical"&&& android:background="@drawable/list_item_bg"&&&& &&& &RelativeLayout&&&&&&& android:layout_width="fill_parent"&&&&&& android:layout_height="fill_parent"&&&&&& android:gravity="center_vertical"&&&&& &&&&&&& &&&&&&& &TextView&&&&&&&&&& .....&&&&&&&&&& /&&&&&&& &ImageView&&&&&&&&&&& ....&&&&&&&&&& /&&& &/RelativeLayout&&/LinearLayout&
============================================
drawable下的 list_item_bg.xml中的代码:
&?xml version="1.0" encoding="utf-8" ?&&&selector xmlns:android="/apk/res/android"&& &item android:state_selected="true"&&&&&&&& android:drawable="@color/blue" /&&& &item android:state_focused="true"&&&&&&&& android:drawable="@color/blue" /&&/selector&&step2:
list.setOnItemClickListener(new OnItemClickListener(){&& &&& &&& &&& &@Override&& &&& &&& &&& &public void onItemClick(AdapterView&?& arg0, View arg1,&& &&& &&& &&& &&& &&& &int arg2, long arg3) {&& &&& &&& &&& &&&&&& &&& &&& &&& &&&&&arg1.setBackgroundResource(R.color.blue);& //&注意是这个方法o&& &&& &&& &&& &&&& .......&& &&& &&& &&& &}});&& &&& &}
注意:当完成第二步之后,再运行程序会发现有个小小的问题,当你点击item时,选中的颜色会先是默认的橙黄色,然后变成设置的绿色。所以我们需要进行step3。
step3:在myList.xml中的 ListView设置:
&android:listSelector="@android:color/transparent"&& //&将选中的默认设置为透明色
等同于:&android:listSelector="#"&&
这样就ok了
还有其他方法
ListView选中时默认是黄色,很多时候会和我们软件的配色不符合,那么我就教你如何修改默认的ListView配色,改变ListView选中颜色有两个方法:1. 在程序中:
Java代码 &
Drawable&drawable=getResources().getDrawable(R.drawable.touch_feedback);&&
ListView.setSelector(drawable);&&
2. 在xml里面的ListView标签下添加:
Java代码 &
android:listSelector=&#&P&//后面的颜色可以自己定这样写是透明的&&
记录和恢复ListView滚动的位置有时候我们需要记录当前ListView滚动到的位置,重新加载的时候要回到原位,不罗嗦,给出代码:
Java代码 &
//列表滚动&&
private&OnScrollListener&ScrollLis&=&new&OnScrollListener()&{&&
&&&&@Override&&
&&&&public&void&onScroll(AbsListView&arg0,&int&arg1,&int&arg2,&int&arg3)&{&&
&&&&@Override&&
&&&&public&void&onScrollStateChanged(AbsListView&view,&int&scrollState)&{&&
&&&&&&&&if(scrollState==OnScrollListener.SCROLL_STATE_IDLE){&&
&&&&&&&&&&&&&&&&&&&&ListPos=list.getFirstVisiblePosition();&&//ListPos记录当前可见的List顶端的一行的位置&&
&&&&&&&&&&&&}&&
接下来就是还原位置,放在ListView加载之后:
Java代码 &
list.setSelection(ListPos);&&
关于android ListView的美化用心的朋友应该会发现,listview中在设置了背景之后。会有些问题。1.、listview在拖动的时候背景图片消失变成黑色背景。等到拖动完毕我们自己的背景图片才显示出来。2 、listview的上边和下边有黑色的阴影。3、lsitview的每一项之间需要设置一个图片做为间隔。针对以上问题 在listview的xml文件中设置一下语句。问题1 有如下代码结解决 android:scrollingCache=&false& 或 android:cacheColorHint=&#&P问题2 用如下代码解决:android:fadingEdge=&none&问题3 用如下代码解决: android:divider=&@drawable/list_driver& 其中 @drawable/list_driver 是一个图片资源ListView拖动时背景黑色的问题我们知道在Android中ListView是一个比较常用的UI控件,我们在大部分开发中都需要用到它,因此Android为我们提供了 ListView的多种实现方法,通过自定义显示布局让显示的内容更加美观,但是我们会发现这样一个问题,当我们操作ListView的时候,如果不使用手机上下按键的时候,直接用触摸拖动视图的方式,会发现ListView的背景一片黑色,而且所有被选中的文字都变成一片漆黑。其实这个问题发生的原因在于ListView存在缓存颜色机制,因此我们可以通过设定缓存颜色为透明的方法来解决这个问题。提供两个解决方法供大家使用,如下所示:A、通过布局属性来设定(ListView的属性中直接定义)android:cacheColorHint=&#&PB、在代码中直接设定listView.setCacheColorHint(Color.TRANSPARENT);这样就可以解决黑色出现的问题了。ListView 中添加按钮,动态删除添加ItemView的操作要实现添加按钮的操作,必须自定义Adapter,使用Button View的setTag()方法,将Button所属的位置设置到tag当中要实现动态添加删除ItemView的操作,必须首先调整调整Adapter所绑定的数据源,然后调用Adapter的notifyDataSetChanged()方法以下为实现的一个实例
Java代码 &
package&com.jason.&&
import&java.util.ArrayL&&
import&java.util.HashM&&
import&java.util.L&&
import&java.util.M&&
import&android.app.ListA&&
import&android.content.I&&
import&android.os.B&&
import&android.view.LayoutI&&
import&android.view.V&&
import&android.view.ViewG&&
import&android.view.W&&
import&android.view.View.OnClickL&&
import&android.widget.BaseA&&
import&android.widget.B&&
import&android.widget.EditT&&
import&android.widget.TextV&&
public&class&SendMain&extends&ListActivity&implements&OnClickListener{&&
&&&&Button&buttonMessage,buttonContact,buttonH&&
&&&&EditText&textM&&
&&&&List&Map&String,String&&&contacts&=&new&ArrayList&Map&String,String&&();&&
&&&&@Override&&
&&&&protected&void&onCreate(Bundle&savedInstanceState)&{&&
&&&&&&&&//&TODO&Auto-generated&method&stub&&
&&&&&&&&super.onCreate(savedInstanceState);&&
&&&&&&&&this.requestWindowFeature(Window.FEATURE_NO_TITLE);&&
&&&&&&&&this.setContentView(R.layout.layout_send);&&
&&&&&&&&buttonMessage&=&(Button)&this.findViewById(R.id.ButtonMessage);&&
&&&&&&&&buttonContact&=&(Button)&this.findViewById(R.id.ButtonContact);&&
&&&&&&&&buttonHistory&=&(Button)&this.findViewById(R.id.ButtonHistory);&&
&&&&&&&&textMessage&=&(EditText)this.findViewById(R.id.EditTextMessage);&&
&&&&&&&&textMessage.setText(this.getIntent().getExtras().getString("message"));&&
&&&&public&void&onClick(View&v)&{&&
&&&&&&&&//&TODO&Auto-generated&method&stub&&
&&&&&&&&switch(v.getId()){&&
&&&&&&&&case&R.id.ButtonMessage:&&
&&&&&&&&&&&&this.finish();&&
&&&&&&&&&&&&break;&&
&&&&&&&&case&R.id.ButtonContact:&&
&&&&&&&&{&&
&&&&&&&&&&&&Intent&intent&=&new&Intent();&&
&&&&&&&&&&&&intent.setAction("com.jason.action.contact");&&
&&&&&&&&&&&&this.startActivityForResult(intent,&0);&&
&&&&&&&&}&&
&&&&&&&&&&&&break;&&
&&&&&&&&case&R.id.ButtonHistory:&&
&&&&&&&&{&&
&&&&&&&&&&&&Intent&intent&=&new&Intent();&&
&&&&&&&&&&&&intent.setAction("com.jason.action.history");&&
&&&&&&&&&&&&this.startActivityForResult(intent,&1);&&
&&&&&&&&}&&
&&&&&&&&&&&&break;&&
&&&&&&&&}&&
&&&&protected&void&onActivityResult(int&requestCode,&int&resultCode,&Intent&data)&{&&
&&&&&&&&//&TODO&Auto-generated&method&stub&&
&&&&&&&&super.onActivityResult(requestCode,&resultCode,&data);&&
&&&&&&&&&if&(requestCode&==&0&&&&resultCode&==&RESULT_OK)&{&&
&&&&&&&&&&&&this.getcontactFromString(data.getExtras().getString(&&
&&&&&&&&&&&&&&&&&&&&UserSelectActivity.RETURN_LIST));&&
&&&&&&&&&&&&bindDataToList();&&
&&&&&&&&}&&
&&&&private&void&getcontactFromString(String&data)&{&&
&&&&&&&&if&(data&==&null&||&data.length()&==&0)&{&&
&&&&&&&&&&&&return;&&
&&&&&&&&}&&
&&&&&&&&String[]&arrayContact&=&data.split("#");&&
&&&&&&&&for&(String&singleContact&:&arrayContact)&{&&
&&&&&&&&&&&&if&(singleContact&!=&null&&&&singleContact.length()&&&0)&{&&
&&&&&&&&&&&&&&&&String[]&props&=&singleContact.split(":");&&
&&&&&&&&&&&&&&&&if&(props.length&==&2)&{&&
&&&&&&&&&&&&&&&&&&&&Map&String,String&&contact&=&new&HashMap&String,String&();&&
&&&&&&&&&&&&&&&&&&&&contact.put("name",&props[0]);&&
&&&&&&&&&&&&&&&&&&&&contact.put("phone",&props[1]);&&
&&&&&&&&&&&&&&&&&&&&contacts.add(contact);&&
&&&&&&&&&&&&&&&&}&&
&&&&&&&&&&&&}&&
&&&&&&&&}&&
&&&&private&void&bindDataToList(){&&
&&&&&&&&this.setListAdapter(new&MyAdapter());&&
&&&&public&class&MyAdapter&extends&BaseAdapter{&&
&&&&&&&&public&int&getCount()&{&&
&&&&&&&&&&&&//&TODO&Auto-generated&method&stub&&
&&&&&&&&&&&&return&contacts.size();&&
&&&&&&&&}&&
&&&&&&&&public&Object&getItem(int&position)&{&&
&&&&&&&&&&&&//&TODO&Auto-generated&method&stub&&
&&&&&&&&&&&&return&contacts.get(position);&&
&&&&&&&&}&&
&&&&&&&&public&long&getItemId(int&position)&{&&
&&&&&&&&&&&&//&TODO&Auto-generated&method&stub&&
&&&&&&&&&&&&return&&&
&&&&&&&&}&&
&&&&&&&&public&View&getView(int&position,&View&convertView,&ViewGroup&parent)&{&&
&&&&&&&&&&&&//&TODO&Auto-generated&method&stub&&
&&&&&&&&&&&&LayoutInflater&inflater&=&SendMain.this.getLayoutInflater();&&
&&&&&&&&&&&&&final&View&view&=&inflater.inflate(R.layout.layout_user_item,&null);&&
&&&&&&&&&&&&&final&TextView&textPhone&=&(TextView)&view.findViewById(R.id.text1);&&
&&&&&&&&&&&&&final&TextView&textName&=&(TextView)&view.findViewById(R.id.text2);&&
&&&&&&&&&&&&&Button&button&=&(Button)view.findViewById(R.id.buttonDelete);&&
&&&&&&&&&&&&&textPhone.setText(contacts.get(position).get("phone"));&&
&&&&&&&&&&&&&textName.setText(contacts.get(position).get("name"));&&
&&&&&&&&&&&&&button.setTag(&position);&&
&&&&&&&&&&&&&button.setOnClickListener(new&OnClickListener(){&&
&&&&&&&&&&&&&&&&public&void&onClick(View&v)&{&&
&&&&&&&&&&&&&&&&&&&&//&TODO&Auto-generated&method&stub&&
&&&&&&&&&&&&&&&&&&&&int&position&=&Integer.parseInt(v.getTag().toString());&&
&&&&&&&&&&&&&&&&&&&&contacts.remove(position);&&
&&&&&&&&&&&&&&&&&&&&MyAdapter.this.notifyDataSetChanged();&&
//&&&&&&&&&&&&&&&&&&SendMain.this.getListView().refreshDrawableState();&&
&&&&&&&&&&&&&&&&}});&&
&&&&&&&&&&&&return&&&
&&&&&&&&}&&
Android ListView 清单与其Trigger 触发事件Android ListView 清单与其选择时的触发事件,可以参考下面的程式范例 :
Java代码 &
public&class&helloWorld&extends&Activity&{&&
&&&&String[]&vData&=&null;&&
&&&&public&void&onCreate(Bundle&savedInstanceState)&{&&
&&&&&&&&super.onCreate(savedInstanceState);&&
&&&&&&&&//&要做为ArrayAdapter的资料来源&&
&&&&&&&&vData&=&new&String[]{"足球","棒球","篮球"};&&
&&&&&&&&//&建立"阵列接收器"&&
&&&&&&&&ArrayAdapter&String&&&arrayData&=&new&ArrayAdapter&String&(&&
&&&&&&&&&&&&&&&&this&&
&&&&&&&&&&&&&&&&,&android.R.layout.simple_list_item_1&&
&&&&&&&&&&&&&&&&,&vData&&
&&&&&&&&&&&&&&&&);&&
&&&&&&&&//&建立ListView&物件&&
&&&&&&&&ListView&&lv&=&new&ListView(this);&&
&&&&&&&&//&设定ListView&的接收器,&做为选项的来源&&
&&&&&&&&lv&.&setAdapter&(&arrayData&);&&
&&&&&&&&//&ListView&设定Trigger&&
&&&&&&&&lv&.&setOnItemClickListener&(&new&OnItemClickListener()&{&&
&&&&&&&&&&&&public&void&onItemClick&(AdapterView&?&&arg0,&View&arg1,&int&arg2,&&
&&&&&&&&&&&&&&&&&&&&long&arg3)&{&&
&&&&&&&&&&&&&&&&//&TODO&Auto-generated&method&stub&&
&&&&&&&&&&&&&&&&setTitle(&getResources().getString(R.string.app_name)&+&":&"&+&vData&[&arg2&]);&&
&&&&&&&&&&&&}&&
&&&&&&&&});&&
&&&&&&&&//&设定ListView&为ContentView&&
&&&&&&&&setContentView(lv);&&
&&&Android中的ListView内容刷新问题最近在学习Android的listView控件时遇到了一个问题,如何添加一个Item到ListView中并及时的刷新出来。在网上查了很多帖子,很多人在问,也很多人在解答,但是总的来说都没找到详细的解决方案。对于ListView与数据库的同步,高手们建议使用 ContentProvider对象。但是如果我不使用数据库呢?也有人回答用notifyDataSetChanged()方法。这倒是一个正确的解决方案,但是对于新手来说,还是比较困惑怎么去用,这里我贴一下我的用法:
Java代码 &
OnClickListener&listener2&=&new&OnClickListener()&{&&
&&&&&&&&@Override&&
&&&&&&&&public&void&onClick(View&v)&{&&
&&&&&&&&&&&&//&TODO&Auto-generated&method&stub&&
&&&&&&&&&&&&Map&String,&Object&&m&=&new&HashMap&String,&Object&();&&
&&&&&&&&&&&&String&tiString&&=&tv.getText().toString();&//&注意这里我为什么要取出这个EditText的内容&&
&&&&&&&&&&&&m.put("prod_na",&tiString);&//&而不这样写&m.put("prod_na",&tv.getText());&&
&&&&&&&&&&&&m.put("prod_type",&tiString);&//&因为tv.getText()返回的是Editable对象,真正的数据是被缓存的,&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&也就是说你后续的EditText改动都会影响之前添加的Item&&
&&&&&&&&&&&&coll.add(m);&&
&&&&&&&&&&&&//&取回Adapter对象,用于调用notifyDataSetChanged方法。&&
&&&&&&&&&&&&SimpleAdapter&sAdapter&=&(SimpleAdapter)lv.getAdapter();&&
&&&&&&&&&&&&sAdapter.notifyDataSetChanged();&&
&&&&&&&&}&&
这里涉及到了Android中的MVC模式概念,如何存储数据,控制和显示。你可以认为ListView是一个View,那么mode是什么呢?显然是SimpleAdapter对象,而Control又是什么呢?那只能是notifyDataSetChanged()了。当数据变化时,也就是SimpleAdapter所处理的数据变化了,那么我们就需要调用 notifyDataSetChanged 去通知View作出改变。
阅读(...) 评论()C# 中 listView 的用法 当选中listView 中的某一行时颜色改变_百度知道
C# 中 listView 的用法 当选中listView 中的某一行时颜色改变
我任意选行让颜色变化鼠标经某行颜色变化办
获取listview选项行索引号根据索引让改行变色鼠标经某行颜色变化找找listview事件看看哪鼠标移关
我也这样 做过了,,不行
不可能。你先用 MessageBox.Show(index.ToString())测试一下,你是否获得了选中项的索引。
来自团队:
其他类似问题
为您推荐:
listview的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 改变listview某一项的 的文章

 

随机推荐