SwipeMenuListView
github:https://github.com/baoyongzhang/SwipeMenuListView
效果图
gradle
dependencies {
...
compile 'com.baoyz.swipemenulistview:library:1.3.0'
}
xml
<com.baoyz.swipemenulistview.SwipeMenuListView
android:id="@+id/swipeMenuListView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
步骤
- 创建SwipeMenuCreator,并给ListView设置
- 给menu的item设置点击事件
先个SwipeMenuListView
设置adapter
listView = (SwipeMenuListView) findViewById(R.id.swipeMenuListView);
MyAdapter adapter = new MyAdapter();
listView.setAdapter(adapter);
创建SwipeMenuCreator,并给ListView设置
注意:item的必须设置宽度和文字大小,否则看不到。
不设置宽度,那么宽度是0;不设置文字大小,那么看不到文字。
SwipeMenuCreator creator = new SwipeMenuCreator() {
@Override
public void create(SwipeMenu menu) {
SwipeMenuItem item = new SwipeMenuItem(getApplicationContext());
item.setTitle("收藏");
item.setTitleSize(20);//必须设置
item.setTitleColor(Color.RED);
item.setBackground(R.color.colorPrimary);
item.setWidth(100);//必须设置
menu.addMenuItem(item);
SwipeMenuItem item2 = new SwipeMenuItem(getApplicationContext());
item2.setTitle("删除");
item2.setTitleColor(Color.RED);
item2.setTitleSize(18);
item2.setBackground(R.color.colorPrimary);
item2.setWidth(120);
item2.setIcon(R.mipmap.ic_launcher_round);
menu.addMenuItem(item2);
}
};
listView.setMenuCreator(creator);
给每个item设置点击事件
return的返回值:点击menuItem后menu是否dismiss。true: 不消失,false:消失。
position就是adapter中的position,index是menuItem的索引,从0开始
listView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
Log.d(TAG, position + "****" + index);//position就是adapter中的position,index是menuItem的索引,从0开始
switch (index) {
case 0:
Toast.makeText(context, "收藏", Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(context, "删除", Toast.LENGTH_SHORT).show();
break;
}
//position=5时,点击menuItem后menu没有消失
if (position == 5) {
return true;
}
return false;//点击menuItem后menu是否dismiss。true: 不消失,false:消失
}
});
其他方法
设置打开menu的动画
listView.setCloseInterpolator(new BounceInterpolator());
listView.setOpenInterpolator(new BounceInterpolator());
设置menu在那一边
listView.setSwipeDirection(SwipeMenuListView.DIRECTION_LEFT);//向左滑,menu在右边
menu打开后关闭时调用的方法
listView.setOnMenuStateChangeListener(new SwipeMenuListView.OnMenuStateChangeListener() {
@Override
public void onMenuOpen(int position) {
Toast.makeText(context, "Menu打开了", Toast.LENGTH_SHORT).show();
}
@Override
public void onMenuClose(int position) {
Toast.makeText(context, "Menu关闭了", Toast.LENGTH_SHORT).show();
}
});
Demo: http://git.oschina.net/libraryDemo/swipemenulistview01