2016/4/18

TabLayout

ref: http://www.truiton.com/2015/06/android-tabs-example-fragments-viewpager/

原來 tab 是手動做出來的。

再看 http://givemepass.blogspot.tw/2015/10/tablayout.html
這個也是 step by step: http://givemepass-blog.logdown.com/posts/288943-how-to-use-tablayout

原來是 android support library 新增加 actionbar 元件。

Support Library 要額外download, 會放在 extra/ 下。

裡面有這些 features

不僅提供舊OS能有新 interface 的 api support, 同時也有新增加的 feature

根據你的 OS 版本不同,要用的內容也不一樣

要用的話,除了要download, 還要修改 build.gradle, 加入
compile 'com.android.support:design:23.2.1
-- 開啟 SDK Manager 來看裝的是那一版。


根據上面兩個 ref link, 合併在一起: https://github.com/checko/TabLayout

原來TabLayout 是主要元件。
所以 main layout 上要擺一個 TabLayout (android.support.design.widget.TabLayout)
然後還需要一個區域:ViewPager (android.support.v4.view.ViewPager)

這個 ViewPager 就是用來讓 TabLayout 根據click 和滑動變更內容的區域。
TabLayout 基本上只負責 顯示 title, 反應 click/swipe 來變更 ViewPager 內容。
不管ViewPager 裡面的動作。

負責反應click, swipe 的是 TabLayout.setOnTabSelectedListener()
負責 swipe , 因為動作在ViewPager, 所以是 ViewPager.addOnPageChangeListener()

然後把 ViewPager 和每一個 page 內容 (layout) 連在一起的是 PagerAdapter 這個 class
要繼承這個 class, 實做 instantiateItem(..,int position ) 時,根據 position 把page 內容(layout)生出來。


在 ViewPager 李的每個 view 裡面的 widget (view), 只有用那個 view 才access 得到。
舉例來說,page 2 李有一個 TextView,
要用
view = getLayoutInflater().inflate(R.layout.page_2, container, false);
mTextView = (TextView) view.findValueById(R.id.tvppp);
在 MainActivity 的 OnCreate 裡,access 不到。

沒有留言:

張貼留言