欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

RecyclerView通過GridLayoutManager實現多樣式布局的示例

 更新時間:2017年12月06日 09:25:51   作者:lygttpod  
本篇文章主要介紹了RecyclerView通過GridLayoutManager實現多樣式布局的示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一、開篇

距離上次寫文章已經有段時間了,說實話真不知道最近在忙些什么,現在沉下心來把最近項目中遇到的問題記錄下來便于以后遇到中使用吧!

廢話不多說,先看一下效果圖


二、需求解析

1、先說下項目需求,不管是好評還是差評下邊的Tag標簽有不同的展示類型,有的字數多的會單獨占一行處理(這邊其實也可以擴充,比如說兩三個字的可以一行顯示三個Tag標簽),第一眼看到這個需求準備使用網上的開源庫TagLayout去實現,但是嘗試了一下后發(fā)現其實他們實現的效果同項目要的效果還是有蠻大差距的,可以看到效果圖里邊是要求文字是居中對齊的,左右對稱的。

2、想到使用GridView實現這個功能,定義adapter去實現沒問題,問題是什么時候顯示一行什么時候顯示兩行三行并不能確定,畢竟有時候服務端返回的沒有類型標示只有tag_name和tag_id,你要根據什么設置類型吶,而且自從recyclerview之后現在要是還用GridView的話豈不是太落伍了。下邊就重點介紹一下使用recyclerview實現如圖效果。

三、功能實現

我們知道recyclerview實現GridView效果只需配置一下參數就行了

  GridLayoutManager layoutManage = new GridLayoutManager(getContext(), 2);
  recycerView.setLayoutManager(layoutManage);

可以看到GridLayoutManager需要傳遞兩個參數,一個是上下文對象,另一個是一行顯示幾列的參數常量,既然這個常量可以指定那么是不是這個值可以去控制吶,答案當然是yes

我們會注意到GridLayoutManager里邊有個setSpanSizeLookup方法,本篇的重點就是這個方法(這個方法具體意義大家可以網上搜索,會有很多相關介紹,以及通過它實現一些復雜的布局,再次不做過多討論)

   layoutManage.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
         @Override
         public int getSpanSize(int position) {
           return 0;
         }
       });

其實getSpanSize返回值就是控制每行有幾列的,根據這個思路我們不妨試試。因為recyclerview填充數據是根據adapter實現的,我們就把給adapter的數據源同樣在setSpanSizeLookup這個方法里邊判斷一下不就行了嗎?
根據這個思路于是有了下面的代碼

    /**
     * 如果單個item顯示的字數大于指定某個值就顯示一列 默認2列
     */

     //設置item數據大于多少字只顯示一行 默認 超過九個字的程度只顯示一列

     private static final int MAX = 9;

    private int setSpanSize(int position, List<TagBean> listEntities) {
      int count;
      if (listEntities.get(position).getTag_name().length() > MAX) {
        count = 2;
      } else {
        count = 1;
      }

      return count;
    }

    layoutManage.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
               @Override
               public int getSpanSize(int position) {
                 return setSpanSize(position,list);
               }
             });

核心代碼就這么多,我們可以根據自己的需求隨意定制樣式

最后奉上源碼地址:https://github.com/lygttpod/AndroidCustomView

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Android Studio 導入新工程項目圖解

    Android Studio 導入新工程項目圖解

    這篇文章主要介紹了Android Studio 導入新工程項目圖解,需要的朋友可以參考下
    2017-12-12
  • Android AlertDialog自定義樣式實現代碼

    Android AlertDialog自定義樣式實現代碼

    這篇文章主要介紹了Android AlertDialog自定義樣式實現代碼的相關資料,這里提供了實例代碼,一個簡單示例,需要的朋友可以參考下
    2016-12-12
  • Android中的Intent Filter匹配規(guī)則簡介

    Android中的Intent Filter匹配規(guī)則簡介

    這篇文章主要為大家詳細介紹了Android中的Intent Filter匹配規(guī)則,感興趣的小伙伴們可以參考一下
    2016-04-04
  • Android高性能日志寫入方案的實現

    Android高性能日志寫入方案的實現

    這篇文章主要給大家介紹了關于Android高性能日志寫入方案的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • Android Bitmap的加載與緩存

    Android Bitmap的加載與緩存

    這篇文章主要介紹了Android Bitmap的加載與緩存的相關資料,需要的朋友可以參考下
    2018-03-03
  • Android自定義view實現滑動解鎖效果

    Android自定義view實現滑動解鎖效果

    這篇文章主要為大家詳細介紹了Android自定義view實現滑動解鎖效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Kotlin類型系統(tǒng)竟如此簡單

    Kotlin類型系統(tǒng)竟如此簡單

    這篇文章主要給大家介紹了關于Kotlin類型系統(tǒng)的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Kotlin具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • Android底部導航欄的三種風格實現

    Android底部導航欄的三種風格實現

    這篇文章主要介紹了Android底部導航欄的三種風格實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Android自定義邊緣凹凸的卡劵效果

    Android自定義邊緣凹凸的卡劵效果

    這篇文章主要介紹了Android自定義邊緣凹凸的卡劵效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Android實現帶簽到贏積分功能的日歷

    Android實現帶簽到贏積分功能的日歷

    這篇文章主要為大家詳細介紹了Android實現帶簽到贏積分功能的日歷,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評論