您的位置:首页 > 移动开发 > Android开发

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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐