actionbarsherlock のタブ アイコンの 1 つの上に描画したいと思います。これを行うには、タブ アイコンを設定する代わりに、他の ABS タブとまったく同じスタイルのビューを作成しようとしています。abs4 がタブを ScrollingTabContainerView に追加しているようです。ScrollingTabContainerView の TabView クラスは、アイコンを取得してタブの中央に配置する役割を担っているようです。そのため、 update() メソッドで見つかったそのコードに基づいて次のコードをモデル化しました。
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 で属性を設定すると、アプリが起動時に Android.widget.LinearLayout の NoSuchMethodError でクラッシュします。
Android属性を使用してスタイルを設定する適切な方法は何ですか?