Android的List点击某一项之后的背景设置
2014-02-18 16:38
423 查看
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(或者说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实现为ListView同时设置点击时的背景和点击松手之后的背景
- Android圆角、点击背景----shape和selector和layer-list使用
- android GridView通过代码设置,取消item点击时的黄色背景
- Android中Listview点击item不变颜色及设置listselector 无效的解决方案
- android ListView item 点击设置背景图片需要注意的问题
- android listview 设置点击item背景颜色效果
- Android 一组textview 点击之后更换背景 并保持不变
- Android 我需要点击一个按键之后能够出现对话框并且通过对话框设置密码和输入密码
- android 点击右上角加号,弹出下拉菜单的分割线背景颜色设置解决方案
- android学习:设置全屏、点击响应、布局背景
- Android中listview的item点击时候去掉背景颜色或者设置成透明的
- 当GridView中的一项被点中的时候显示的背景图片:android:listSelector="@drawable/choose_gridview"
- 当GridView中的一项被点中的时候显示的背景图片:android:listSelector="@drawable/choose_gridview"
- Android 给view 设置setSystemUiVisibility 之后,每次点击事件监听不到
- Android_百度地图,点聚合功能,点击事件&&设置聚合数字的背景颜色
- Android 我需要点击一个按键之后能够出现对话框并且通过对话框设置密码和输入密码
- Android中的ListView点击时的背景颜色设置
- android中如何去掉pulltorefreshlistview点击item时的背景颜色,与item外边距设置
- 请问怎么设置布局被点击之后,背景颜色变深?