2012-02-10 12 views
1

アクションバーセクションのタブアイコンの1つを描画したいと思います。これを行うには、タブのアイコンを設定する代わりに、他の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); 

次に、タブでllを使用してsetCustomView()を呼び出します。私がタブに上書きしたいときは、getCustomViewを使ってタブからビューを取得します。

上記のLinearLayoutの作成をandroid.R.attr.actionBarTabStyleで指定しないと、それは機能しますが、アイコンはタブの中央に配置されません。そのIDで属性を設定すると、起動時に、アンドロイド.widget.LinearLayoutのNoSuchMethodErrorでアプリケーションがクラッシュします。

android属性を使用してスタイルを設定する適切な方法は何ですか?

+0

を? –

答えて

2

3-arg LinearLayoutコンストラクタは唯一のライブラリはXMLにデフォルトのスタイルを指定することでこれを回避するために、システムのレイアウトインフレータを活用APIで11

を追加しました。あなたは同じことを行うことができます。単に、その後

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

と:あなたが最後に `ScrollingTabContainerView`にビューを設定しましたか

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

'setCustomView'を使うと、' ActionBarView'にitemを追加します。しかし、 'ScrollingTapContainerView'の中にどのように項目を追加しますか?タブの代わりに別のビューを追加する計画。ポートレートモードの携帯電話で2番目のレイヤーが必要です。そうすることは悪い考えですか? - ここに階層ビューアのhttp://i48.tinypic.com/oqzwcw.pngスナップショットがあります。 –

+0

@Jake Whartonこれで私を助けてもらえますか? http://stackoverflow.com/questions/28711930/tabview-using-actionbarsherlock-library – Nevaeh

関連する問題