我想绘制 actionbarsherlock 的选项卡图标之一。为此,我尝试创建一个样式与其他 ABS 标签完全相同的 View ,而不是设置标签图标。看起来 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 从选项卡中检索 View 来实现。
如果我没有指定使用 android.R.attr.actionBarTabStyle 创建上面的 LinearLayout,它可以工作,但图标不会布置在选项卡的中心。如果我使用该 ID 设置属性,我的应用程序会在启动时崩溃,并出现来自 android.widget.LinearLayout 的 NoSuchMethodError。
使用 android 属性设置样式的正确方法是什么?
最佳答案
3-arg LinearLayout
构造函数仅在 API 11 中添加。
库利用系统布局 inflater 通过在 XML 中指定默认样式来解决这个问题。您可以这样做:
<LinearLayout style="?attr/actionBarTabStyle" />
然后简单地:
LineraLayout tabView = LayoutInflater.from(context).inflate(R.layout.my_tab, null);
//set your layout params and setCustomView
关于android - 为 ActionBar Sherlock 选项卡设置自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9236373/