91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中RecyclerView顯示Item布局不一致怎么辦

發布時間:2021-07-14 09:22:44 來源:億速云 閱讀:127 作者:小新 欄目:移動開發

這篇文章將為大家詳細講解有關Android中RecyclerView顯示Item布局不一致怎么辦,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

RecyclerView顯示Item布局不一致

在自定義RecyclerAdapter的時候,在重寫onCreateViewHolder方法是使用了

 @Override
  public H onCreateViewHolder(ViewGroup parent, int viewType) {
    View view=View.inflate(context,layoutId,null);
    return view;
  }

進行生成布局,結果發現生成的布局沒有LayoutParams。以前自定義View的時候發現,LayoutParams是由于ViewGroup生成的,因為這里添加的ViewGroup為null。所以并不會生成LayoutParams。結果在RecyclerView的getViewForPosition方法中檢查了有沒有LayoutParams如果沒有的話就調用LayoutManager的generateDefaultLayoutParams生成默認的LayoutParames。代碼段如下:

 final ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams();
      final LayoutParams rvLayoutParams;
      if (lp == null) {
        rvLayoutParams = (LayoutParams) generateDefaultLayoutParams();
        holder.itemView.setLayoutParams(rvLayoutParams);
      } else if (!checkLayoutParams(lp)) {
        rvLayoutParams = (LayoutParams) generateLayoutParams(lp);
        holder.itemView.setLayoutParams(rvLayoutParams);
      } else {
        rvLayoutParams = (LayoutParams) lp;
      }

而在LinearLayoutManager中generateDefaultLayoutParams方法實現如下。

/**
   * {@inheritDoc}
   */
  @Override
  public LayoutParams generateDefaultLayoutParams() {
    return new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
        ViewGroup.LayoutParams.WRAP_CONTENT);
  }

最終會造成RecycleView的顯示效果與布局文件不一致。后來使用了LayoutInflater來填充布局。

@Override
  public H onCreateViewHolder(ViewGroup parent, int viewType) {

    View view = mInflater.inflate(layoutId, parent, false);
    return getInstanceOfH(view);
  }

查看LayoutInflater源碼發現inflate最后的參數如果是false的話就不會將生成的View添加到parent。但是會根據parent產生相應的LayoutParams 。源碼如下:

* @param attachToRoot Whether the inflated hierarchy should be attached to
   *    the root parameter? If false, root is only used to create the
   *    correct subclass of LayoutParams for the root view in the XML.

因為在onCreateViewHolder中產生的View不能由我們手動添加到RecycleView中所以最后的參數只能是false;

關于“Android中RecyclerView顯示Item布局不一致怎么辦”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安塞县| 丰城市| 襄樊市| 夏河县| 岳普湖县| 和龙市| 江西省| 郓城县| 岱山县| 湖州市| 克东县| 安塞县| 会昌县| 曲周县| 南澳县| 鄂托克旗| 博罗县| 肃北| 托克托县| 眉山市| 巨鹿县| 武汉市| 高台县| 平和县| 汉寿县| 金川县| 称多县| 勃利县| 西乌珠穆沁旗| 闸北区| 龙口市| 濉溪县| 永泰县| 怀远县| 沈阳市| 时尚| 图片| 长沙县| 德化县| 乌什县| 宣恩县|