最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android中RecyclerView的item寬高問(wèn)題詳解

 更新時(shí)間:2017年08月30日 11:00:03   作者:鍵盤上的麒麟臂  
RecyclerView出現(xiàn)已經(jīng)有一段時(shí)間了,相信大家肯定不陌生了,下面這篇文章主要給大家介紹了關(guān)于Android中RecyclerView的item寬高問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。

前言

本文主要給大家介紹了關(guān)于Android中RecyclerView的item寬高問(wèn)題的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。

在創(chuàng)建viewholder傳入的View時(shí),如果不指定其viewgroup,就會(huì)出現(xiàn)寬高只包裹顯示內(nèi)容的問(wèn)題。

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

上面的做法就會(huì)出問(wèn)題

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

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

那么還是有一個(gè)問(wèn)題。

假如我的view是在adapter創(chuàng)建之前創(chuàng)建的,也就是說(shuō)我的view是從外邊傳進(jìn)來(lái)的,不是在onCreateViewHolder方法中創(chuàng)建。這樣就無(wú)法設(shè)置parent。遇到這種情況又要怎么處理呢?

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

在網(wǎng)上查了很多帖子都是一些扯淡的話,無(wú)奈之下我只好查看源碼,沒(méi)想到正好發(fā)現(xiàn)解決辦法的關(guān)鍵。

看過(guò)源碼就知道原來(lái)我們要傳的parent這個(gè)參數(shù)就是這個(gè)recyclerview。


從這里發(fā)現(xiàn)原來(lái)我們用到的parent就是RecyclerView.this。
這就說(shuō)明只要在創(chuàng)建view之前有recyclerview,那么即便是在adapter之前創(chuàng)建view也能讓這個(gè)view在recyclerview中正常顯示


附加內(nèi)容:另類解決item的寬高問(wèn)題

上面的內(nèi)容是我挺早前寫的,現(xiàn)在遇到新的情況所以補(bǔ)充一下。上面我們說(shuō)了,如果在創(chuàng)建item時(shí)不指定parent,最后展示的效果是會(huì)包裹內(nèi)容。

比如:

<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布局,就算我設(shè)置TextView顯示在中間,實(shí)際運(yùn)行的時(shí)候會(huì)展示在左邊,這個(gè)情況有點(diǎn)像RelativeLayout的viewgroup把里面的空氣抽出來(lái)一樣。

上面的解決方法是沒(méi)問(wèn)題的,創(chuàng)建時(shí)為這個(gè)布局設(shè)置parent。但是,有的時(shí)候你解耦把RecyclerView和item的耦合度降得很低,這是創(chuàng)建item布局要拿到RecyclerView這個(gè)parent很麻煩,這時(shí)怎么辦?

其實(shí)你會(huì)發(fā)現(xiàn),有時(shí)候不設(shè)置parent,Item的寬度也能填充整個(gè)父布局,為什么,因?yàn)檫@種情況下item的寬度本來(lái)就已經(jīng)填充布局了,也就是說(shuō)在寬度上已經(jīng)沒(méi)有“空氣”了,所以再寬上不會(huì)被壓縮。

按照這個(gè)原理,我們可以來(lái)個(gè)騷操作解決這個(gè)問(wèn)題,那就是想辦法讓布局寬度填充,對(duì)RelativeLayout來(lái)說(shuō)是件容易的事。

<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>

這樣寫,展示的時(shí)候,第一個(gè)TextView的內(nèi)容就能正常的展示到中間。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論

天柱县| 瑞金市| 从化市| 大港区| 文昌市| 乌鲁木齐县| 新乡县| 泸定县| 麻阳| 永嘉县| 高唐县| 资源县| 上林县| 上思县| 随州市| 红安县| 临泉县| 克山县| 南通市| 友谊县| 天水市| 繁峙县| 绥江县| 华蓥市| 黄冈市| 龙井市| 库伦旗| 广西| 叙永县| 武城县| 潞城市| 彭山县| 天气| 南召县| 三江| 遵义县| 永泰县| 姚安县| 浦城县| 自贡市| 宣武区|