我希望在逐个标签的基础上覆盖标签样式,以便我可以将效果应用于某些标签,同时让其他标签保持正常。
以下是我用于自定义标签的布局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”放在样式和主题的所有地方,没有结果。
答案 0 :(得分: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代码中完成。