滑動導覽列(PagerSlidingTabStrip)實踐,pagerslidingtabstrip
本篇介紹另一個開源項目滑動導覽列(PagerSlidingTabStrip)。
/** * 滑動導覽列(PagerSlidingTabStrip)test * */public class MainActivity extends FragmentActivity { private Fragment1 mFragment1; private Fragment2 mFragment2; /** * PagerSlidingTabStrip的執行個體 */ private PagerSlidingTabStrip tabs; /** * 擷取當前螢幕的密度 */ private DisplayMetrics dm; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setOverflowShowingAlways(); dm = getResources().getDisplayMetrics(); ViewPager pager = (ViewPager) findViewById(R.id.pager); tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs); pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager())); tabs.setViewPager(pager); setTabsValue(); } /** * 對PagerSlidingTabStrip的各項屬性進行賦值。 */ private void setTabsValue() { // 設定Tab是自動填滿滿螢幕的 tabs.setShouldExpand(true); // 設定Tab的分割線是透明的 //tabs.setDividerColor(Color.TRANSPARENT); // 設定Tab底部線的高度 tabs.setUnderlineHeight((int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 3, dm)); // 設定Tab Indicator的高度 tabs.setIndicatorHeight((int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 2, dm)); // 設定Tab標題文字的大小 tabs.setTextSize((int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_SP, 16, dm)); // 設定Tab Indicator的顏色 tabs.setIndicatorColor(Color.parseColor("#45c01a")); // 設定選中Tab文字的顏色 (這是我自訂的一個方法) tabs.setSelectedTextColor(Color.parseColor("#45c01a")); // 取消點擊Tab時的背景色 tabs.setTabBackground(0); } public class MyPagerAdapter extends FragmentPagerAdapter { public MyPagerAdapter(FragmentManager fm) { super(fm); } private final String[] titles = { "Apps", "MyData"}; @Override public CharSequence getPageTitle(int position) { return titles[position]; } @Override public int getCount() { return titles.length; } @Override public Fragment getItem(int position) { switch (position) { case 0: if (mFragment1 == null) { mFragment1 = new Fragment1(); } return mFragment1; case 1: if (mFragment2 == null) { mFragment2 = new Fragment2(); } return mFragment2; default: return null; } } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onMenuOpened(int featureId, Menu menu) { if (featureId == Window.FEATURE_ACTION_BAR && menu != null) { if (menu.getClass().getSimpleName().equals("MenuBuilder")) { try { Method m = menu.getClass().getDeclaredMethod( "setOptionalIconsVisible", Boolean.TYPE); m.setAccessible(true); m.invoke(menu, true); } catch (Exception e) { } } } return super.onMenuOpened(featureId, menu); } private void setOverflowShowingAlways() { try { ViewConfiguration config = ViewConfiguration.get(this); Field menuKeyField = ViewConfiguration.class .getDeclaredField("sHasPermanentMenuKey"); menuKeyField.setAccessible(true); menuKeyField.setBoolean(config, false); } catch (Exception e) { e.printStackTrace(); } }}
2). Fragment:3. :
http://download.csdn.net/detail/liranke/8758765
開源的力量是無窮的!