Android RecyclerView 表格效果末患,header添加,遇到的問(wèn)題等

最總效果:

device-2017-03-13-135723.png

代碼分析, 其中遇到的問(wèn)題和坑:

1: 外圍的黑色邊框势决,shape完成 ( bg.xml )

<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 填充-->
    <solid android:color="#ffffff"></solid>
    <!-- 邊框 -->
    <stroke android:color="#000000" android:width="2dp"></stroke>
</shape>

上面是4面的邊框阻塑,如果想實(shí)現(xiàn)一個(gè)3面的邊框呢?
可以使用layer-list的圖片疊加功能實(shí)現(xiàn)果复,(bg_header.xml)

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- 實(shí)現(xiàn)了只有l(wèi)eft陈莽,top,right的3面邊框, 底部不需要 -->

    <item>
        <shape android:shape="rectangle" >
            <stroke
                android:width="1dp"
                android:color="@color/black" />
        </shape>
    </item>

    <item
        android:left="2dp"
        android:right="2dp"
        android:top="2dp">
        <!-- 可以完全理解為top就是paddingTop虽抄,bottom就是paddingBottom走搁。就是內(nèi)邊距。
        這邊的3面有內(nèi)邊距迈窟,-->

        <!-- 在實(shí)際使用中我發(fā)現(xiàn)1dp達(dá)不到顯示效果私植,而2dp正好可以顯示邊框 -->

        <shape android:shape="rectangle" >
            <solid android:color="@color/mainColor" />
        </shape>
    </item>
</layer-list>

2: 列表中的下劃線實(shí)現(xiàn)

a: 實(shí)現(xiàn)類DividerItemDecoration.class, 見項(xiàng)目代碼

RecyclerView.ItemDecoration,該類為抽象類车酣,官方目前并沒(méi)有提供默認(rèn)的實(shí)現(xiàn)類曲稼。而DividerItemDecoration.class該類很好的實(shí)現(xiàn)了RecyclerView添加分割線。

b: recyclerview 添加item的下劃線湖员,和方向

mRecyclerView.addItemDecoration(new DividerItemDecoration(
getActivity(), DividerItemDecoration.VERTICAL_LIST));

在該demo的表格中下劃線的方向是垂直方向贫悄,不要弄錯(cuò),已經(jīng)犯過(guò)了娘摔!

c: AppTheme中進(jìn)行下劃線的顏色修改

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        //下劃線的顏色修改
        <item name="android:listDivider">@drawable/item_bottom_line</item>
    </style>

3: 添加header

思路:adapter提供的getItemViewType()方法窄坦,來(lái)區(qū)分不同的view,加載不同的布局實(shí)現(xiàn)凳寺。

a: getItemViewType()中根據(jù)位置position==0來(lái)判斷是header布局

@Override
    public int getItemViewType(int position) {
        if(position == 0){
            return TYPE_HEADER;
        }

        if (position == getItemCount()-1){
            //最后一個(gè),應(yīng)該加載Footer
            return TYPE_FOOTER;
        }

        return TYPE_NORMAL;
    }

b: 通過(guò)判斷headerView和類型是不是正確鸭津,布局header到recyclerView中

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

        if(mHeaderView != null && viewType == TYPE_HEADER){
            //需要傳入parent,不然item不能居中
//            return new NormalViewholder(mHeaderView);
            return new NormalViewholder(LayoutInflater.from(mContext).inflate(R.layout.item_first_header, parent, false));
        }

        //需要傳入parent肠缨,不然item不能居中
        View viewNormal = LayoutInflater.from(mContext).inflate(R.layout.item_recycler_grid, parent, false);
        return new NormalViewholder(viewNormal);
    }

c: 設(shè)置header

private void setAdaperHeader(){
        View view = LayoutInflater.from(mActivity).inflate(R.layout.item_first_header,null);
        mAdapter.setHeader(view);
    }

遇到的坑:

坑1:布局中的文字不能居中

解決方法:布局文件逆趋,需要進(jìn)過(guò)layoutinflater加入到parent才行!!!!!

if(mHeaderView != null && viewType == TYPE_HEADER){
            //需要傳入parent,不然item不能居中
//            return new NormalViewholder(mHeaderView);
            return new NormalViewholder(LayoutInflater.from(mContext).inflate(R.layout.item_first_header, parent, false));
        }

坑2:給header設(shè)置畢竟顏色時(shí)晒奕,黑色的邊框給覆蓋了

device-2017-03-13-135550.png

解決方法:使用layer-list實(shí)現(xiàn)一個(gè)背景父泳,這個(gè)背景是將left般哼,top,right3面的內(nèi)邊距減掉2dp的惠窄,這樣和原來(lái)的布局重疊一下蒸眠,黑色的邊框就出來(lái)了!

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:left="2dp"
        android:right="2dp"
        android:top="2dp">
        <shape>
            <solid android:color="@color/colorAccent"></solid>
        </shape>
    </item>

</layer-list>

好了杆融,到這里基本弄完了楞卡,有問(wèn)題的歡迎留言,謝謝脾歇!
github地址:https://github.com/George-Soros/RecyclerViewTest

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蒋腮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子藕各,更是在濱河造成了極大的恐慌池摧,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件激况,死亡現(xiàn)場(chǎng)離奇詭異作彤,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)乌逐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門竭讳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人浙踢,你說(shuō)我怎么就攤上這事绢慢。” “怎么了洛波?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵胰舆,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我蹬挤,道長(zhǎng)思瘟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任闻伶,我火速辦了婚禮,結(jié)果婚禮上够话,老公的妹妹穿的比我還像新娘蓝翰。我一直安慰自己,他們只是感情好女嘲,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布畜份。 她就那樣靜靜地躺著,像睡著了一般欣尼。 火紅的嫁衣襯著肌膚如雪爆雹。 梳的紋絲不亂的頭發(fā)上停蕉,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音钙态,去河邊找鬼慧起。 笑死,一個(gè)胖子當(dāng)著我的面吹牛册倒,可吹牛的內(nèi)容都是我干的蚓挤。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼驻子,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼灿意!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起崇呵,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤缤剧,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后域慷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荒辕,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年芒粹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了兄纺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡化漆,死狀恐怖估脆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情座云,我是刑警寧澤疙赠,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站朦拖,受9級(jí)特大地震影響圃阳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜璧帝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一捍岳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧睬隶,春花似錦锣夹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至恤左,卻和暖如春贴唇,著一層夾襖步出監(jiān)牢的瞬間搀绣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工戳气, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留链患,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓物咳,卻偏偏與公主長(zhǎng)得像锣险,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子览闰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容