日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

【笔记】与Android选项卡一周

發(fā)布時間:2025/6/15 Android 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【笔记】与Android选项卡一周 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

果然,還是項目驅(qū)動的學(xué)習(xí)方式比較有趣呢。

這周的學(xué)習(xí)全部圍繞著選項卡,也就是tab。

用到了好多知識點,都不知道從哪里開始啦(≧o≦*)。


????選項卡的制作有很多方法。選項菜單可以用普通的TextView,也可以直接上button。我選擇的是TextView,可能更接近網(wǎng)頁的思路吧。

先列個清單出來:

  • selector

  • Fragment

  • ViewPager

  • 布局嘛,網(wǎng)上有一堆,就不提了。


    1.selector

    ? ??選項卡的功能,就是按不同的按鈕就能切換到不同頁面。作為反饋,按鈕總得有點變化,比如換個顏色。實現(xiàn)思路很簡單,點擊之后換個圖標(biāo)就好了嘛。嗯~o(* ̄▽ ̄*)o,然而在onClick上折騰半天之后,我打開了百度,很快發(fā)現(xiàn)了selector這個標(biāo)簽。

    Σヽ(Д ; )居然還有這種操作!

    ? ? ?selector用起來很簡單,寫在drawable目錄下:

    for_tab1.xml:

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    ? ?<item android:drawable="@drawable/ic_news_act" android:state_selected="true" />
    ? ?<item android:drawable="@drawable/ic_news" />
    </selector>

    ????ic_news和ic_news_act是通過new->Image Asset導(dǎo)入的圖標(biāo),自動生成各種規(guī)格,免去了手動處理圖片大小的麻煩。和.9圖應(yīng)該是一樣的效果吧(.9圖?我沒做,我不懂)。


    ????接著在主界面的TextView寫上這句話:

    ????android:drawableTop="@drawable/for_tab1"

    ? ? 完工!

    ????改變item標(biāo)簽內(nèi)的屬性名(比如color),就可以改變其他效果。



    2.Fragment

    ????接著就是內(nèi)容匹配。每個選項卡對應(yīng)一個內(nèi)容,一個內(nèi)容就是一個Fragment。

    ????android中一個頁面可以看作一個Activity,而Fragment只是”碎片“,生命周期不會長于所存在的Activity。查看配置文件AndroidManifest.xml可以發(fā)現(xiàn),Fragment是沒有注冊的。

    ?? ? 最簡單的Fragment,就是重寫onCreatView:

    View?onCreateView(LayoutInflater?inflater,?ViewGroup?container,Bundle?savedInstanceState)?{View?view?=??inflater.inflate(R.layout.,?container,?);view;}

    這時冒出了個inflater!你是誰?inflater說我只是個控制器,連接視圖和模型。啊~雖然沒有明白,但我暫時放過你,小心點inflater,我會盯著你的!

    ????


    3.ViewPager

    ????鐺~鐺~鐺~

    ????ViewPager來了!快讓開!

    ????誒,Fragment好像沒講完啊?沒辦法呀,Fragment沒人(activity)權(quán)啊,只能靠主子(activity)接濟過活╮(╯3╰)╭。ViewPager就是從Activity派來的走狗,啊呸,使者!

    ? ?1 ViewPager可說是這個選項卡的核心。每個Fragment是選項卡顯示的內(nèi)容,ViewPager像是內(nèi)容的容器,同時擔(dān)任調(diào)度的工作。

    ????布局里的ViewPager看起來就是個普通的標(biāo)簽,但是人家上頭有人!

    ????ViewPager需要一個FragmentAdapter才能工作。

    ? ? 這是個超簡單的實現(xiàn):

    tabFragmentAdapter?FragmentPagerAdapter?{ArrayList<Fragment>??;=;tabFragmentAdapter(FragmentManager?fm,?ArrayList<Fragment>?list){(fm);.=?list;}Fragment?getItem(position)?{.get(position);}getCount()?{;} }

    ????入口在主界面的Java類中:

    ?fa?=?(getSupportFragmentManager(),?); .setAdapter(fa);

    fg是填入了所有Fragment的ArrayList。

    getSupperFragmentManager()取到了主界面的FragmentManager。

    vp是用id獲取的布局中的ViewPager。


    在tab所在的主界面的Java類的onCreate()中運行,就綁定好了這些Fragment。



    2Listener人呢?給tab們綁定好事件就該你上場了

    tabListener?View.OnClickListener?{=?;tabListener(index)?{.=?index;}onClick(View?v)?{.setCurrentItem();clearSelect();.get().setSelected();} }

    index是區(qū)分tab的編號;

    clearSelect是將tab卡片選擇狀態(tài)重置(用setSelected(false));

    tabList里裝的是作為tab按鈕的TextView;

    綁定事件應(yīng)該會,,,吧?

    (i?=?;?i?<?.size();?i++)?{.get(i).setOnClickListener(tabListener(i)); }

    似乎很簡單,但是我不會告訴你,有一半時間花在了調(diào)空指針的BUG!


    轉(zhuǎn)載于:https://blog.51cto.com/gzq2017/1927812

    總結(jié)

    以上是生活随笔為你收集整理的【笔记】与Android选项卡一周的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。