2012-02-10 52 views
1

我想繪製一個actionbarsherlock的選項卡圖標。要做到這一點,而不是設置一個選項卡圖標,我試圖創建一個與其他ABS選項卡完全一樣的視圖。它看起來像abs4將標籤添加到ScrollingTabContainerView。 ScrollingTabContainerView中的TabView類似乎負責獲取圖標並將它們放在標籤的中心,所以我已經在其update()方法中找到的代碼上建立了以下代碼。爲ActionBar Sherlock選項卡設置自定義視圖

Drawable icon = getResources().getDrawable(resid); 
LinearLayout ll = new LinearLayout(this, null, android.R.attr.actionBarTabStyle); 
ImageView iconView = new ImageView(this); 
ActionBar.LayoutParams lp = new ActionBar.LayoutParams(LayoutParams.WRAP_CONTENT, 
                LayoutParams.WRAP_CONTENT); 
lp.gravity = Gravity.CENTER_VERTICAL; 
iconView.setLayoutParams(lp); 
ll.addView(iconView, 0); 
iconView.setImageDrawable(icon); 

然後我在Tab上調用setCustomView()。當我想要在選項卡上編寫代碼時,我可以通過使用getCustomView從選項卡中檢索視圖來完成此操作。

如果我沒有指定使用android.R.attr.actionBarTabStyle創建上面的LinearLayout,它可以工作,但是圖標並沒有放在標籤的中心。如果我使用該Id設置了屬性,我的應用程序在啓動時崩潰了android.widget.LinearLayout中的NoSuchMethodError。

什麼是使用android屬性設置樣式的正確方法?

+0

你怎麼最後設置'ScrollingTabContainerView'的看法? – 2012-09-19 20:21:03

回答

2

3-arg LinearLayout構造函數API 11

只添加庫利用系統佈局吹氣通過在XML中指定的默認樣式來解決這個問題。你可以這樣做:

<LinearLayout style="?attr/actionBarTabStyle" /> 

,然後簡單地說:

LineraLayout tabView = LayoutInflater.from(context).inflate(R.layout.my_tab, null); 
//set your layout params and setCustomView 
+0

當我們使用'setCustomView'時,它將項目添加到'ActionBarView'。但是,如何在'ScrollingTapContainerView'中添加項目。計劃添加不同的視圖而不是製表符。只需要在縱向模式下的手機上的第二層。這樣做不好嗎? - 這裏是一個hierarchyviewer http://i48.tinypic.com/oqzwcw.png快照。 – 2012-09-19 20:13:19

+0

@Jake Wharton你能幫我解決嗎? http://stackoverflow.com/questions/28711930/tabview-using-actionbarsherlock-library – Nevaeh 2015-02-25 05:40:07

相關問題