这是一款提供侧滑功能的 ViewGroup,可以设置它的滑动方向:左、右、上、下。 另外,它也解决了滑动冲突的问题,所以你可以把它放在你的 RecyclerView 或者 ListView 中。
Step 1. 添加 JitPack 仓库
Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Step 2. 添加依赖
dependencies {
compile 'com.github.qiaoyunrui:SlipperyLayout:v1.1'
}
添加到你的布局文件中:
<com.juhezi.slipperylayout.SlipperyLayout
android:id="@+id/sl_test"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_margin="8dp"
app:content="@layout/content"
app:lock="false"
app:menu="@layout/menu"
app:slideGravity="top" />
提供的属性:
-
content:内容布局的引用
-
menu:菜单布局的引用
-
slideGravity:滑动方向(左、右、上、下)
-
lock:是否锁定滑动
可以在代码中控制 SlipperyLayout 的打开或者关闭
SlipperyLayout mSlTest = (SlipperyLayout) findViewById(R.id.sl_test);
Button mBtnOpen = (Button) findViewById(R.id.btn_open);
Button mBtnClose = (Button) findViewById(R.id.btn_close);
mBtnOpen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mSlTest.openMenuView(); //打开菜单视图
}
});
mBtnClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mSlTest.closeMenuView(); //关闭菜单视图
}
});
提供的方法:
-
public void setSlideGravity(@SlideGravity int slideGravity)
,设置滑动方向 -
public boolean isLock()
,是否锁定滑动 -
public void setLock(boolean lock)
,设置锁定(设置为 true 的话,SlipperyLayout 就无法进行滑动) -
public boolean isMenuViewVisible()
,获取菜单视图的可见性 -
public View getMenuView()
,获取菜单视图 -
public View getContentView()
,获取内容视图 -
public void openMenuView()
,打开菜单视图 -
public void closeMenuView()
,关闭菜单视图 -
public void setSlideListener()
,设置监听器 -
public void removeSlideListener()
,移除监听器
-
public void onSliding(View menuView, int dx, int dy)
,当滑动的时候调用 -
public void onMenuOpened(View menuView)
,当打开菜单视图的时候调用 -
public void onMenuClosed(View menuView)
,当关闭菜单视图的时候调用 -
public void onStateChanged(@SlipperyLayout.State int oldState, @SlipperyLayout.State int newState)
,当 SlipperyLayout 的状态发生改变的时候调用
SlipperyLayout 支持 Padding 和 Margin,但是不支持 elevation。
如果你在使用过程中遇到了什么问题,请发 issue 或者发邮件给我,我的邮箱是 [email protected]。