国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

一個(gè)強(qiáng)大的側(cè)滑菜單控件ASwipeLayout

2019-10-21 21:41:15
字體:
供稿:網(wǎng)友

前言

該控件的優(yōu)點(diǎn):

1.無論是在RecyclerView,ListView,還是LinearLayout等,只要是ViewGroup用該控件都能實(shí)現(xiàn)側(cè)滑。
2.控件的手勢滑動(dòng)沖突已解決,不會出現(xiàn)嵌套到ScrollView等控件出現(xiàn)滑動(dòng)不流暢的情況
3.控件使用簡單,只需要在xml外套一層該控件就好了,秒接入
4.點(diǎn)擊事件很方便,原來什么寫法就什么寫法

1.效果圖

側(cè)滑菜單控件,ASwipeLayout

側(cè)滑菜單控件,ASwipeLayout

2.使用方式其實(shí)挺簡單的,在設(shè)計(jì)的時(shí)候,就是想著怎么簡單怎么來

2.1引入庫:

Step 1. Add it in your root build.gradle at the end of repositories:

allprojects { repositories {  ...  maven { url 'https://jitpack.io' } } }

Step 2. Add the dependency

 dependencies {     implementation 'com.github.WelliJohn:ASwipeLayout:0.0.2' }

2.2在需要側(cè)滑的布局的根布局中添加下面這段代碼,注意注釋的地方才是可以定制的:

<?xml version="1.0" encoding="utf-8"?><wellijohn.org.swipevg.ASwipeLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:app="http://schemas.android.com/apk/res-auto"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:orientation="horizontal">  <LinearLayout    android:id="@+id/ll_content"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:background="#FFFFFF"    android:orientation="horizontal">    //在這里是實(shí)現(xiàn)你的主item的東西,根據(jù)你們的項(xiàng)目隨便添加  </LinearLayout>  <LinearLayout    android:id="@+id/right_menu_content"    android:layout_width="wrap_content"    android:layout_height="match_parent">     //在這里是實(shí)現(xiàn)右側(cè)的菜單,根據(jù)你們的項(xiàng)目隨便添加  </LinearLayout></wellijohn.org.swipevg.SwipeLayout>

注意在這里ll_content,right_menu_content是一定要的,這個(gè)id對應(yīng)的布局不要自己去改變,以后有需要會放開,目前的話,一般的情況你們只需要定制主item的內(nèi)容和右側(cè)菜單欄了,在這里我也省去了定義一些額外的自定義view了,單純就是用id,來區(qū)分主item和右側(cè)的菜單。

3.因?yàn)镽ecyclerView中有復(fù)用Item的情況,針對這種情況的解決方案

因?yàn)閕tem復(fù)用會使得當(dāng)我們滑出某個(gè)menu的時(shí)候,再進(jìn)行RecyclerView的上下滑動(dòng)時(shí),會使得其他的Item也滑出了menu,這就是item復(fù)用導(dǎo)致了布局錯(cuò)亂,所以針對這類型的問題的話,我在這里已經(jīng)提供了OnSwipeStateChangeListener接口,在這里你們可以記錄下滑動(dòng)的狀態(tài),在onBindViewHolder方法里面,根據(jù)狀態(tài)來設(shè)定Item是打開menu還是關(guān)閉menu:

 @Override  public void onBindViewHolder(ViewHolder holder, int position) {    final Person person = mDatas.get(position);    holder.scrollDelLl.setOpen(person.isOpen());    holder.scrollDelLl.setOnSwipeStateChangeListener(new OnSwipeStateChangeListener() {      @Override      public void onSwipeStateChange(boolean open) {        person.setOpen(open);      }    });  }

如上代碼就可以解決Item復(fù)用導(dǎo)致布局錯(cuò)亂的問題了(粑粑再也不用擔(dān)心RecyclerView復(fù)用的問題了)。

4.如果你們在項(xiàng)目使用的過程中,有新的需求或者是bug的話,可以在github上提你們的需求或者issue

5.代碼已上傳github,ASwipeLayout

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 东阿县| 石屏县| 澄江县| 九龙坡区| 昌邑市| 太仆寺旗| 甘孜| 庄河市| 安溪县| 陵水| 方城县| 淮阳县| 泸定县| 赤峰市| 乐业县| 丰城市| 锡林郭勒盟| 文水县| 南京市| 远安县| 汤阴县| 江孜县| 新竹县| 罗城| 新兴县| 三台县| 吴堡县| 若尔盖县| 会昌县| 县级市| 福鼎市| 望城县| 枣庄市| 浑源县| 青龙| 江门市| 万盛区| 庄河市| 红河县| 定南县| 华坪县|