Android 点击控件(比如ListView中item),抬起后,保持按下的背景颜色
2015-01-31 18:07
621 查看
在很多时候会有以下场景,用户选择一个条目,又或者是开启一个服务关闭一个服务(比如开启拦截黑名单服务)等,都是需要保存状态,给用户提示当前选的是哪一个item,所以説 按下控件,抬起手时,保持控件按下时的颜色这样就会体验很好
listview中的item,使用背景选择器,然后代码里通过打标记设置holder.tv_select_device.setSelected(true);来控制当前item的状态,标注:设置textColor可以,设置resource可以,但是这个方法不能设置背景,背景还得靠代码里实现
holder.llayout.setBackgroundResource(R.drawable.popupwindow_bg_selector);
item布局
文本状态选择器 font_down_green_up_black.xml
代码中通过标记控制状态:
这样抬起时就会达到保持按下的颜色和背景..........
本文由NantiJey原创总结,如需转载请标明出处 :http://blog.csdn.net/jss4j/article/details/43342265
资源下载地址:http://download.csdn.net/detail/hiberatejss/8413061
listview中的item,使用背景选择器,然后代码里通过打标记设置holder.tv_select_device.setSelected(true);来控制当前item的状态,标注:设置textColor可以,设置resource可以,但是这个方法不能设置背景,背景还得靠代码里实现
holder.llayout.setBackgroundResource(R.drawable.popupwindow_bg_selector);
item布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="50dp" android:background="@drawable/popupwindow_bg_selector" android:gravity="center_vertical" android:id="@+id/ll_llayout_all" > <ImageView android:layout_width="30dp" android:layout_height="30dp" android:layout_marginLeft="30dp" android:background="@drawable/popupwindow_bg_item_logo" /> <TextView android:id="@+id/tv_selectdev" android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="1" android:text="会议室的盒子" android:textSize="20sp" android:gravity="center_vertical" android:textColor="@drawable/font_down_green_up_black" android:layout_marginLeft="30dp" /> <ImageView android:id="@+id/iv_ok" android:layout_width="20dp" android:layout_height="20dp" android:layout_marginRight="30dp" android:visibility="invisible" android:background="@drawable/popupwindow_bg_item_ok" /> </LinearLayout>
文本状态选择器 font_down_green_up_black.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_focused="true" android:color="#2CD41D" /> <!-- focused --> <item android:state_pressed="true" android:color="#2CD41D" /> <!-- pressed --> <item android:state_selected="true" android:color="#2CD41D" /> <!-- pressed --> <item android:state_checked="true" android:color="#2CD41D"/> <item android:color="#000000" /> <!-- default --> </selector>
代码中通过标记控制状态:
public class ActivityC extends Activity implements OnItemClickListener { private ListView lv_devicelist; private ArrayList testList ; private TestAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_c_fill); lv_devicelist = (ListView) findViewById(R.id.lv_devicelist); adapter = new TestAdapter(); testList = new ArrayList(); testList.add(new String ("HelloWorld one")); testList.add(new String ("HelloWorld two")); testList.add(new String ("HelloWorld three")); lv_devicelist.setAdapter(adapter); lv_devicelist.setOnItemClickListener(this); } class TestAdapter extends BaseAdapter{ int a = -1; public void setSelectFlag(int flag){ if (flag==a) { return; } System.out.println("notifydata.........."); a = flag; notifyDataSetChanged(); } @Override public int getCount() { return 3; } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { // return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = null; ViewHolder holder; if (convertView != null ) { view = convertView; System.out.println("复用了一个view" + position); holder = (ViewHolder) view.getTag(); } else { view = View.inflate(getApplicationContext(), R.layout.activity_c_fill_item, null); System.out.println("新的view" + position); holder = new ViewHolder(); holder.tv_select_device = (TextView) view .findViewById(R.id.tv_selectdev); holder.iv_ok = (ImageView)view.findViewById(R.id.iv_ok); holder.llayout = (LinearLayout)view.findViewById(R.id.ll_llayout_all); view.setTag(holder);// 把笔记本装兜里了 } holder.tv_select_device.setSelected(false); // holder.llayout.setSelected(false); holder.iv_ok.setVisibility(holder.iv_ok.INVISIBLE); holder.llayout.setBackgroundResource(R.drawable.popupwindow_bg_selector); if(a != -1&& position == a){ System.out.println("set COLOR===>"); holder.tv_select_device.setSelected(true); holder.iv_ok.setVisibility(holder.iv_ok.VISIBLE); holder.llayout.setBackgroundResource(R.drawable.popupwindow_bg_item_select); } <span style="white-space:pre"> </span>holder.tv_select_device.setText(testList.get(position).toString()); return view; }} class ViewHolder { TextView tv_select_device; ImageView iv_ok; LinearLayout llayout; } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { adapter.setSelectFlag(position); } }
这样抬起时就会达到保持按下的颜色和背景..........
本文由NantiJey原创总结,如需转载请标明出处 :http://blog.csdn.net/jss4j/article/details/43342265
资源下载地址:http://download.csdn.net/detail/hiberatejss/8413061
相关文章推荐
- Android listview 点击Item更换背景颜色
- android listview内的TextView会在点击item的时候灰变背景颜色
- android中如何去掉pulltorefreshlistview点击item时的背景颜色,与item外边距设置
- android如何设置listview点击后的item背景颜色的变换
- Android 代码模拟ListView item的点击事件并且改变背景颜色(笔记)
- Android中listview的item点击时候去掉背景颜色或者设置成透明的
- 史上最全selector和shape使用方法 Android ListView 列表项点击之后,保持背景颜色
- android listview 设置点击item背景颜色效果
- android中如何去掉pulltorefreshlistview点击item时的背景颜色,与item外边距设置
- android中设置ListView的选中的Item的背景颜色(松开后的背景颜色)
- android中设置ListView的选中的Item的背景颜色
- android中设置ListView的选中的Item的背景颜色
- Android ListView item点击后,背景色一直保持
- Android-ListView中嵌套(ListView)控件时item的点击事件不起作用的问题
- Android中的ListView点击时的背景颜色设置
- Android中设置ListView的选中的Item的背景颜色【简单模式】
- android中设置ListView的选中的Item的背景颜色
- android中设置ListView的选中的Item的背景颜色(附源码)
- Android中设置ListView的选中的Item的背景颜色【复杂模式】
- Android中设置ListView的选中的Item的背景颜色