PagerSlidingTabStrip原始碼分析

2021-08-03 14:00:02 字數 4355 閱讀 8348

* 這個方法

可以為某乙個值

* 賦值

*/displaymetrics dm = getresources().getdisplaymetrics();

, scrolloffset

, dm);

, indicatorheight

, dm);

, underlineheight

, dm);

, dividerpadding

, dm);

, tabpadding

, dm);

, dividerwidth

, dm);

, tabtextsize

, dm);

/**

* 取出

xml中配置的屬性

*/a = context.obtainstyledattributes(attrs, r.styleable.pagerslidingtabstrip

);

indicatorcolor = a.getcolor(r.styleable.pagerslidingtabstrip_pstsindicatorcolor

, indicatorcolor);

underlinecolor = a.getcolor(r.styleable.pagerslidingtabstrip_pstsunderlinecolor

, underlinecolor);

dividercolor = a.getcolor(r.styleable.pagerslidingtabstrip_pstsdividercolor

, dividercolor);

indicatorheight = a.getdimensionpixelsize(r.styleable.pagerslidingtabstrip_pstsindicatorheight

, indicatorheight);

underlineheight = a.getdimensionpixelsize(r.styleable.pagerslidingtabstrip_pstsunderlineheight

, underlineheight);

dividerpadding = a.getdimensionpixelsize(r.styleable.pagerslidingtabstrip_pstsdividerpadding

, dividerpadding);

tabpadding = a.getdimensionpixelsize(r.styleable.pagerslidingtabstrip_pststabpaddingleftright

, tabpadding);

tabbackgroundresid = a.getresourceid(r.styleable.pagerslidingtabstrip_pststabbackground

, tabbackgroundresid);

shouldexpand = a.getboolean(r.styleable.pagerslidingtabstrip_pstsshouldexpand

, shouldexpand);

scrolloffset = a.getdimensionpixelsize(r.styleable.pagerslidingtabstrip_pstsscrolloffset

, scrolloffset);

textallcaps = a.getboolean(r.styleable.pagerslidingtabstrip_pststextallcaps

, textallcaps);

//

初始化畫筆,用於

,乙個矩形

rectpaint = new paint();

rectpaint.setantialias(true);

rectpaint.setstyle(style.fill

);

/**

* 繫結乙個

listener

版定之後

,外部不能重複版定

,重複版定

,這個就會失效了

*/pager.setonpagechangelistener(pagelistener);

/**

* 得到檢視樹的監聽者

,,得到乙個空間布局完成

*/getviewtreeobserver().addongloballayoutlistener(new ongloballayoutlistener() else

currentposition = pager.getcurrentitem();

scrolltochild(currentposition

, 0);

}});

/**

* 修改樣式

_只是預設時候的字型顏色以及字型大小

* 修改樣式

,,修改的只是預設時候的字型顏色和預設大小

*/private void

updatetabstyles() else }}

}}

/**

* 繪製 矩形

*/canvas.drawrect(lineleft, height - indicatorheight

, lineright, height,

rectpaint);

下面是參考別人的分析對於這個專案的執行工作看到了sample/資料夾。

包括在以下依賴build.gradle檔案。

compile 'com.jpardogo.materialtabstrip:library:1.1.1'

或庫中新增作為專案。

我試圖傳送乙個拉入請求,但看起來像原開發商不能維持下去了。

包括pagerslidingtabstrip在布局小部件。

這通常應放在上面的

viewpager它代表。

android:id="@+id/tabs"

android:layout_width="match_parent"

android:layout_height="?attr/actionbarsize"

android:background="?attr/colorprimary" />

oncreate方法(或oncreateview為乙個片段),結合小視窗的viewpager

// initialize the viewpager and set an adapter

viewpager pager = (viewpager) findviewbyid(r.id.pager);

pager.setadapter(new testadapter(getsupportfragmentmanager()));

// bind the tabs to the viewpager

pagerslidingtabstrip tabs = (pagerslidingtabstrip) findviewbyid(r.id.tabs);

tabs.setviewpager(pager);

如果您的介面卡實現介面customtabprovider可以貼上您的自定義選項卡檢視/秒。

(可選)

如果您使用onpagechangelistener你的看法尋呼機,你應該將其設定在小部件,而不是直接在尋呼機。

// continued from above

tabs.setonpagechangelistener(mpagechangelistener);

從主題:

注意事項的一些原生屬性:

自定義屬性:

幾乎所有的屬性都有其各自的getter和setter方法在執行時改變它們。

動態地改變

pststabtextfontfamilypststabtextstyle您可以撥打:

Cartographer原始碼篇 原始碼分析 1

在安裝編譯cartographer 1.0.0的時候,我們可以看到 主要包括cartorgarpher ros cartographer ceres sover三個部分。其中,ceres solver用於非線性優化,求解最小二乘問題 cartographer ros為ros平台的封裝,獲取感測器資料...

AbstractListView原始碼分析3

normal list that does not indicate choices public static final int choice mode none 0 the list allows up to one choice public static final int choice ...

Android AsyncTask原始碼分析

android中只能在主線程中進行ui操作,如果是其它子執行緒,需要借助非同步訊息處理機制handler。除此之外,還有個非常方便的asynctask類,這個類內部封裝了handler和執行緒池。本文先簡要介紹asynctask的用法,然後分析具體實現。asynctask是乙個抽象類,我們需要建立子...