android - 为 ActionBar Sherlock 选项卡设置自定义 View

标签 android actionbarsherlock

我想绘制 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/

相关文章:

android - getSupportFragmentManager() 与 android 3.0+ 中的 getFragmentManager()

android - ActionBarSherlock:更改下拉导航标题

android - ActionBarSherlock 在下拉导航微调器上显示错误的颜色和单选按钮

android - Gingerbread 上的 ActionBarCompat 填满整个屏幕

android - 在 Android 上提取/修改视频帧

android - Android Studio 中的 color.xml 文件出现奇怪的错误

Android EditText setText 不更新文本

android - 如何使用矢量绘图发布仅平板电脑的 Android 应用程序

Android 最小按钮高度 : 48dp = 9mm?

android - 在 Android 2.x 中获取 ActionBarSherlock actionBarSize