Android現在實作Tab類型的界面方式越來越多,之前做電商項目時,遇見了類似tab與viewpager之間的左右連帶滑動,我查了一些資料這種效果是繼承自定義的HorizontalScrollView和viewpager完成的,我認為效果蠻好的,也比較簡便。效果圖:
,這裡我是禁止了viewpager原生自帶的左右滑動,我上傳了一個類檔案,裡面有禁止viewpager左右滑動和自定義的HorizontalScrollView。下載下傳位址:http://download.csdn.net/detail/qq_32365567/9525324
代碼:
| |
這裡需要注意的是,我這裡是使用的<cn.tay.Tools.Fobidden 禁止左右滑動的viwepager,如果需要滑動可以調用安卓原生的viewager,android.support.v4.view.ViewPager。xml檔案不好後,我們繼續看activity裡的方法。
首先我們需要在on creat()方法中執行個體化 pager和tabs控件, pager = (ViewPager) findViewById(R.id.pager);
tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs); 還需要适配螢幕的尺寸,DisplayMetrics dm = getResources().getDisplayMetrics(); 當然除了做這些外,我們肯定還要為ViewPager做适配的,也就是繼承FragmentPagerAdapter。這裡為什麼會繼承FragmentPagerAdapter,因為我下面的都是用Fragment填充視圖的,說到這裡,很顯然我們需要建立3個Fragment,private JinBi_all quanbu,JinBi_Add shouru,JinBi_Reduce zhichu。
建立好後,那就要給ViewPager做适配了,代碼:
| |
上面的就是為pager做的适配Adapter方法,顯然就是給tab設定的标題以及點選相對應的fragment界面,那我們還需要在on creat()方法裡執行個體pager, pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
tabs.setViewPager(pager); setTabsValue();那寫到這裡,我們就需要給tab這些标題設定屬性,比如填充滿螢幕、分割線是透明的、Tab底部線的高度、等。如代碼:
| |
這些方法都可以使用我們所需要的界面展示,如果你們還想建立其他炫酷的界面展示,可以在自定義HorizontalScrollView的類中添加需要的方法,以上這些屬性都是在這裡面添加的。寫到這裡基本上都把這些功能給實作了,但是這裡我們還需要做一個關于tab中 使用到的标準常量,像逾時、尺寸、距離,這樣的一個工具類,我們還需建立一個方法放進on creat():private void setOverflowShowingAlways() {
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class
.getDeclaredField("MenuKey");
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
} catch (Exception e) {
e.printStackTrace();
}
}這裡關于ViewConfiguration 類不懂的可以看一下,http://www.aichengxu.com/view/65180,到這裡就能完全實作上圖那種效果了。那每一個fragment就處理相應的界面資料,如果你那幾個界面都是一樣的,可以建立一個fragment,實作共用就行了,也比較簡單隻是處理資料不同而已,這樣會節約很多時間。如果需要看其他的實作效果,可以看一下鴻洋老師的:http://blog.csdn.net/lmj623565791/article/details/24740977,我看了一下,貌似我這個還比較簡單一點。
可能下一篇會貼出關于listview中頭部和身部的item不同,就如上圖中全部界面那種。好了,這個功能就介紹到這裡了,有什麼改進的地方,希望可以給我留言。