Android的List点击某一项之后的背景设置
来源:互联网 发布:ios开发没有mac怎么办 编辑:程序博客网 时间:2024/05/22 06:30
http://hi.baidu.com/amauri3389/item/640365f7dea1b32a753c4c68
先描述一下要解决的问题:当前如果Android屏幕上有一个List(或者说ListView)通过点击上下键或者鼠标的滚轮滚动,List的选中项的背景就会变成黄色。但是如果点击某一项之后,该项的背景会短暂变成浅黄色,然后立刻又变成了默认的黑色,造成没有一项是处于选中状态了。OK,在这里记下解决方法,实现点击一项后背景变成和选中状态一样的图片,并且接着按上下键(滚轮滚动)还能正常选择某一项。注:我以下都是在Android2.2的模拟器环境下测试的。
准备工作:一张png格式的透明图片(52X52),一张和正常的list处于选中状态的背景接近的png格式图片(52X52)。在Android的SDK路径下E:\android-sdk_r06-windows\android-sdk-windows\platforms\android-8\data\res\drawable-mdpi,有一个list_selector_background_focus.9.png,但是如果用这个发现效果居然想到不好,不知为何……
好了,贴出代码,首先是布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="5dip"
>
<ListView android:id="@+id/hellolist"
android:layout_width="fill_parent"
android:layout_height="340dip"
></ListView>
<Button android:id="@+id/myBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/hellolist"
android:layout_alignParentBottom="true"
android:layout_marginTop="30dip"
android:text="显示选中内容" />
</RelativeLayout>
Activity类的代码:
public class NewAddListTest extends Activity {
ListView list;
Button bt;
String result="$$";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mynewlist);
bt=(Button)findViewById(R.id.myBtn);
list = (ListView) findViewById(R.id.hellolist);
String[] data=new String[]{"JQTouch","iUI","YUI","Dojo","Sencha Touch","Ext Js","Kissy","JQuery Mobile"};
ArrayAdapter<String> a=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);
list.setAdapter(a);
OnItemClickListener listener=new OnItemClickListener(){
public void onItemClick(AdapterView<?>parent,View v,int position,long id){
result=parent.getItemAtPosition(position).toString();
for(int i=0;i<parent.getChildCount();i++)
{
if(i==position){ v.setBackgroundResource(R.drawable.now2);} //那张橘黄色背景图片
else {parent.getChildAt(i).setBackgroundResource(R.drawable.kkk);} // 透明的背景图片
}
}
};
OnItemSelectedListener ll=new OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
result=arg0.getItemAtPosition(arg2).toString();
for(int i=0;i<arg0.getChildCount();i++)
{
if(i==arg2){ arg1.setBackgroundResource(R.drawable.now2);}//那张橘黄色背景图片
else {arg0.getChildAt(i).setBackgroundResource(R.drawable.kkk);} // 透明的背景图片
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
};
OnClickListener llClickListener=new OnClickListener(){
@Override
public void onClick(View v) {
if(result.equals("$$"))setTitle("请选择");
else setTitle(result);
}
};
bt.setOnClickListener(llClickListener);
list.setOnItemClickListener(listener);
list.setOnItemSelectedListener(ll);
}
}
- Android的List点击某一项之后的背景设置
- Android的List点击某一项之后的背景设置
- 为ListView同时设置点击时的背景和点击松手之后的背景
- java的list里设置某一项
- 设置某一行背景颜色的CListCtrl
- 设置某一行背景颜色的CListCtrl
- 设置某一行背景颜色的CListCtrl
- 设置ListView某一项不可点击的办法
- Andriod设置ListView某一项不可点击的方法
- Android中的ListView点击时的背景颜色设置
- Android中的ListView点击时的背景颜色设置
- Android 设置按钮点击时候颜色背景的改变
- 取消GridView默认点击某一项的背景颜色为透明
- listview设置点击的当前项的背景
- 设置GridView点击时的背景颜色
- Android 对List中的实体的某一项排序
- vb 设置msflexgrid 某一行的背景颜色
- //点击listview的某一项改变其背景颜色,(例如,点击该项时该项的背景为黄色,其他没被点击的项,背景为率色(默认))
- BeautifulSoup包下载安装
- 男人在追女人前后的区别
- maven 修改本地仓库地址后还存放在.m2下
- STL之stack
- 云计算与openstack (三)整体架构与功能剖析
- Android的List点击某一项之后的背景设置
- 寒假训练--二分哈希--数据结构实验:哈希表
- Android 颜色渲染(八) SweepGradient扫描/梯度渲染
- 《STL源码剖析》traits技法
- EXP-00091: Exporting questionable statistics
- ARC简介以及工程中ARC与非ARC的混合
- hadoop yarn介绍
- 《Java编程思想》学习——按位运算符、移位运算符
- 寒假训练--二分哈希--小明的花费预算