https://github.com/ccapton/android-optionlayout
这是一个模仿QQ聊天列表左滑拉出菜单的控件
https://github.com/ccapton/android-optionlayout
Last synced: about 1 year ago
JSON representation
这是一个模仿QQ聊天列表左滑拉出菜单的控件
- Host: GitHub
- URL: https://github.com/ccapton/android-optionlayout
- Owner: Ccapton
- Created: 2017-01-12T15:08:47.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-01-17T10:19:47.000Z (over 9 years ago)
- Last Synced: 2025-02-06T01:41:23.379Z (over 1 year ago)
- Language: Java
- Homepage:
- Size: 7.09 MB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# OptionLayout
> 关于我,欢迎关注
博客:ccapton(http://blog.csdn.net/ccapton) 微信:[Ccapton]()
### 简介:
这是一个仿照QQ消息项侧滑显示菜单的自定义ViewGroup,实现侧滑弹出选项按钮的效果。
### 示例:
在QQ中是这样的

而我的效果是这样的

### 特性
左滑出现选项按钮,例如“置顶”,“删除”。可以改为自己想要的名称,功能也可自定义
###原理说明
这是一个自定义HorizontalScrollView,在里面动态添加了两个选项按钮,通过手势滑动监测实现滚动,从而显示出选项菜单。
### 如何配置
build.gradle(Project)
``` code
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
```
build.gradle(Module:app)
``` code
dependencies {
compile 'com.github.Ccapton:OptionLayout:1.0'
}
```
### 公共方法
``` code
//设置此ViewGroup(在ListView,GridView,RecyclerView...中)所在的位置
setPosition(int position);
//设置回调,调用此ViewGroup者实现此ViewGroup的OptionClickListener接口并调用该方法。
setOptionClickListener(OptionClickListener listener);
```
### 使用方法
1.在layout目录下新建一个xml布局文件,命名自定义(例如:demo中的option_laout.xml),内容格式如下
``` xml
```
2.在例如ListView中的BaseAdapter中的getView方法中使用
(1)适配器实现接口以完成回调
``` code
class Adapter extends BaseAdapter implements OptionLayout.OptionClickListener{
...省略代码...
@Override
public void leftOptionClick(View view,int postition) {
//点击左边的按钮实现的事件,view为按钮对象,position为后续设置的item所在位置
}
@Override
public void rightOptionClick(View view,int postition) {
//点击右边的按钮实现的事件,view为按钮对象,position为后续设置的item所在位置
}
@Override
public void itemClick(View view,int postition) {
//点击整个item实现的事件,view为整个OptionLayout对象,position为后续设置的item所在位置
}
}
```
(2)OptionLayout在适配器中的使用
``` code
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder=null;
if(convertView==null){
convertView= inflater.inflate(R.layout.option_layout,parent,false);//R.layout.option_layout即为我们自己写的一个xml文件,把它inflate进来就可以了
viewHolder=new ViewHolder(convertView);
convertView.setTag(viewHolder);
}else {
viewHolder= (ViewHolder) convertView.getTag();
}
((OptionLayout)convertView).setOptionClickListener(this); //强转为我们的OptionLaout,为适配器回调事件,例如点击事件,以实现我们的效果
((OptionLayout)convertView).setPosition(position); // 设置OptionLayout这个View在ListView中的位置。
viewHolder.textView.setText(dataList.get(position));
return convertView;
}
```
### 作者的话
挺简单的一个自定义View,主要是实现了我想要效果就行,大家试试就行,源码仅供参考。