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

首頁 > 系統 > Android > 正文

Android中RecyclerView的item寬高問題詳解

2019-10-22 18:28:56
字體:
來源:轉載
供稿:網友

前言

本文主要給大家介紹了關于Android中RecyclerView的item寬高問題的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

在創建viewholder傳入的View時,如果不指定其viewgroup,就會出現寬高只包裹顯示內容的問題。

View view = LayoutInflater.from(context).inflate(R.layout.test_test,null);

上面的做法就會出問題

改成這樣就可以正常顯示設置的寬高

View view = LayoutInflater.from(context).inflate(R.layout.test_test,parent,false);

那么還是有一個問題。

假如我的view是在adapter創建之前創建的,也就是說我的view是從外邊傳進來的,不是在onCreateViewHolder方法中創建。這樣就無法設置parent。遇到這種情況又要怎么處理呢?

我也只找了很多方法,比如在onCreateViewHolder方法中parent.addView()也沒用。

在網上查了很多帖子都是一些扯淡的話,無奈之下我只好查看源碼,沒想到正好發現解決辦法的關鍵。

看過源碼就知道原來我們要傳的parent這個參數就是這個recyclerview。

recyclerviewitem高度,recyclerview,item,recyclerview多布局

recyclerviewitem高度,recyclerview,item,recyclerview多布局

recyclerviewitem高度,recyclerview,item,recyclerview多布局

從這里發現原來我們用到的parent就是RecyclerView.this。
這就說明只要在創建view之前有recyclerview,那么即便是在adapter之前創建view也能讓這個view在recyclerview中正常顯示

recyclerviewitem高度,recyclerview,item,recyclerview多布局

附加內容:另類解決item的寬高問題

上面的內容是我挺早前寫的,現在遇到新的情況所以補充一下。上面我們說了,如果在創建item時不指定parent,最后展示的效果是會包裹內容。

比如:

<RelativeLayout  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:padding="10dp">  <TextView   android:id="@+id/tv_test"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:textSize="@dimen/text_size_15"   android:layout_centerInParent="true" /> </RelativeLayout>

這樣的item布局,就算我設置TextView顯示在中間,實際運行的時候會展示在左邊,這個情況有點像RelativeLayout的viewgroup把里面的空氣抽出來一樣。

上面的解決方法是沒問題的,創建時為這個布局設置parent。但是,有的時候你解耦把RecyclerView和item的耦合度降得很低,這是創建item布局要拿到RecyclerView這個parent很麻煩,這時怎么辦?

其實你會發現,有時候不設置parent,Item的寬度也能填充整個父布局,為什么,因為這種情況下item的寬度本來就已經填充布局了,也就是說在寬度上已經沒有“空氣”了,所以再寬上不會被壓縮。

按照這個原理,我們可以來個騷操作解決這個問題,那就是想辦法讓布局寬度填充,對RelativeLayout來說是件容易的事。

<RelativeLayout  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:padding="10dp">  <TextView   android:id="@+id/tv_test"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:textSize="@dimen/text_size_15"   android:layout_centerInParent="true" />  <TextView   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:layout_alignParentRight="true"   /> </RelativeLayout>

這樣寫,展示的時候,第一個TextView的內容就能正常的展示到中間。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金川县| 潢川县| 大宁县| 汪清县| 黄梅县| 昌邑市| 博兴县| 柏乡县| 西昌市| 迁西县| 英山县| 平江县| 威远县| 宁都县| 扶余县| 方城县| 周口市| 大同县| 阳高县| 茂名市| 密山市| 湟中县| 射洪县| 和田市| 吉隆县| 满城县| 唐河县| 黎平县| 左贡县| 益阳市| 洮南市| 静海县| 武乡县| 大埔区| 吉木萨尔县| 凤冈县| 绥德县| 呼和浩特市| 前郭尔| 神农架林区| 澜沧|