編輯:關於Android編程
android.support.v4.view.PagerTitleStrip
將Page的Title分離出來的一個自定義View,這樣可以靈活的設置title的樣式、文本。
效果:
xml使用:
android:layout_gravity 控制標題的位置 一般取值為 bottom或top
看到開源項目ImageLoader中使用了這個,找了半天沒看到哪裡findbyid的,
原來在它的源碼裡就把它想成是ViewPager的子控件了。
部份源碼:
@Override protected void onAttachedToWindow() { super.onAttachedToWindow(); final ViewParent parent = getParent(); if (!(parent instanceof ViewPager)) { throw new IllegalStateException( PagerTitleStrip must be a direct child of a ViewPager.); } final ViewPager pager = (ViewPager) parent; final PagerAdapter adapter = pager.getAdapter(); pager.setInternalPageChangeListener(mPageListener); pager.setOnAdapterChangeListener(mPageListener); mPager = pager; updateAdapter(mWatchingAdapter != null ? mWatchingAdapter.get() : null, adapter); }
分析:在onAttachedToWindow()時,直接找出parent-view,如果是ViewPager才能使用,否則直接拋出異常。
設置title值
PagerAdapter 裡有一個getPageTitle(),需要重寫它,然後可以根據不同的page返回不同的title。
@Override public CharSequence getPageTitle(int position) { switch (position) { case 0: return getString(R.string.title_list); case 1: return getString(R.string.title_grid); default: return null; } }
而在PageTitleStrip的updateText()源碼裡,調用了viewPager的adapter.getPageTitle,拿到title並設置。
先給大家展示下效果圖,對第三方開源 android tickplusdrawable相關知識感興趣的朋友一起學習吧。Android tickplusdrawable(Ti
在Android開發中,如果某些事件觸發(例如:旋屏事件),則Activity會重新調用onCreate方法,對Activity重新初始化,這樣不僅效率低,而且會造成數據
Android 應用坐標系詳解: &nb
在android開發中,如果在一個線程中想更新主界面中控件顯示的數據,直接給主界面控件賦值就會出現異常,android中為了安全起見,是不允許在線程中更新界面控件的數據,