1 首先是 定义 item的 selector \drawable\listview_item_pressed.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:state_pressed="true"
- android:drawable="@drawable/listview_item_selected_bg" />
- <item
- android:state_pressed="false"
- android:drawable="@drawable/listview_unseleceted" />
- </selector>
2 把selector 添加入 item ,这里采用的是 添加进 item 采用的布局文件中
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:background="@drawable/listview_item_pressed"
- android:orientation="horizontal"
- android:layout_height="56dp">...
3 在 适配器中 getView 方法里 添加 点击事件,也可以在 listView 中的 onItemClick()方法中处理
- convertView.setTag(position);
- convertView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- if(oldView == null){
- //第一次点击
- oldView = v;
- v.setBackgroundDrawable(mContext.getResources().getDrawable(R.drawable.listview_item_selected_bg));
- }else{
- //非第一次点击
- //把上一次点击的 变化
- oldView.setBackgroundDrawable(mContext.getResources().getDrawable(R.drawable.list_pressed));
- v.setBackgroundDrawable(mContext.getResources().getDrawable(R.drawable.listview_item_selected_bg));
- //保存oldView
- oldView = v;
- }
- }
- });
- if(oldView != null && (position == (Integer)oldView.getTag())){// 为点击 item
- convertView.setBackgroundDrawable(mContext.getResources().getDrawable(R.drawable.listview_item_selected_bg));
- }else{
- convertView.setBackgroundDrawable(mContext.getResources().getDrawable(R.drawable.list_pressed));
- }
============================
1
2
3
|
<
Button
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
/>
|
1
|
android:background="@drawable/upload"
|
1
2
3
4
|
<
ImageButton
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:src
=
"@drawable/upload"
/>
|
1
2
3
4
5
6
7
8
9
|
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
selector
xmlns:android
=
"http://schemas.android.com/apk/res/android"
>
<
item
android:state_pressed
=
"true"
android:drawable
=
"@drawable/up_pressed"
/>
<
item
android:state_pressed
=
"false"
android:drawable
=
"@drawable/up"
/>
</
selector
>
|
1
|
android:background="@drawable/button_selector"
|
1
2
3
4
5
6
7
8
|
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
shape
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:shape
=
"rectangle"
>
<
gradient
android:startColor
=
"#808080"
android:endColor
=
"#808080"
android:angle
=
"-90"
/>
</
shape
>
|
1
2
3
4
5
6
7
8
|
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
shape
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:shape
=
"rectangle"
>
<
gradient
android:startColor
=
"#FF7F00"
android:endColor
=
"#EE7600"
android:angle
=
"-90"
/>
</
shape
>
|
1
2
3
4
5
6
7
8
9
10
|
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
selector
xmlns:android
=
"http://schemas.android.com/apk/res/android"
>
<
item
android:state_pressed
=
"true"
android:drawable
=
"@drawable/shape_pressed"
/>
<
item
android:state_pressed
=
"false"
android:drawable
=
"@drawable/shape_normal"
/>
</
selector
>
|
1
2
3
4
5
6
7
|
<
ImageButton
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:src
=
"@drawable/upload_pressed"
android:padding
=
"5dp"
android:layout_centerVertical
=
"true"
android:background
=
"@drawable/button_selector"
/>
|