1

我希望逐个选项卡覆盖选项卡样式,以便我可以将效果应用于某些选项卡,同时让其他选项卡保持正常。

这是我用于自定义选项卡的布局 XML。

<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/CustomActionBarTabTextStyle"
    android:ellipsize="end"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:gravity="center_vertical"/>

在 com.actionbarsherlock.internal.widget.ScrollingTabContainerView.TabView 中的 update() 实现之后,相应地设置了布局参数和文本椭圆。我的 CustomActionBarTabTextStyle 目前唯一覆盖的是文本大小。

选项卡的渲染与没有自定义视图的情况完全相同,只是文本在选项卡中是顶部对齐的。在层次结构查看器中快速运行显示 layout_gravity 显示为 NONE,而 layout_gravity 对于非自定义选项卡显示为 CENTER_VERTICAL。这怎么可能?有没有人有办法解决这个问题?我尝试将 android:layout_gravity="center_vertical" 放在各处的样式和主题中,但没有结果。

4

1 回答 1

2

我现在有一个可行的解决方案,但它不是很漂亮。当我设置自定义视图时,我必须明确地创建和设置我的 LayoutParams。

tab.setCustomView(customtabviewresourceid);
TextView tv = ((TextView)tab.getCustomView());
tv.setText(tab.getText().toString().toUpperCase());
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.gravity=Gravity.CENTER_VERTICAL;
tv.setLayoutParams(lp);

我仍在寻找答案,因为我认为这不是最好的方法。理想情况下,这不应该在 Java 代码中完成。

于 2013-02-28T15:25:01.253 回答