我正在使用具有此布局的ActionBar.Tab setCustomView()方法:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/background_grey" >
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Test Tab"
android:textColor="@color/background_dark_green"/>
</RelativeLayout>
这是我设置ActionBar的函数:
public void setActionBar()
{
ActionBar actionBar = getSupportActionBar();
//actionBar.hide();
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
//set action bar navigation mode
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//set tabs
//home tab
Tab tab = actionBar.newTab().setText(TAB_HOME).setTabListener(new PicoTabListener<StartFragment>(this, StartFragment.class));
tab.setCustomView(R.layout.tab_background);
actionBar.addTab(tab);
//events tab
tab = actionBar.newTab().setText(TAB_EVENTS).setTabListener(new PicoTabListener<EventsFragment>(this, EventsFragment.class));
actionBar.addTab(tab);
//enter event code
tab = actionBar.newTab().setText(TAB_CODE).setTabListener(new PicoTabListener<EnterCodeFragment>(this, EnterCodeFragment.class));
actionBar.addTab(tab);
}
和我的活动布局:
<?xml version="1.0" encoding="utf-8"?>
<!-- This is the main layout of the application -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_basic_root"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/background_dark_green" >
</RelativeLayout>
结果接缝看起来像这样(带有灰色背景的左上角标签):
如何使我的自定义视图填充整个标签并正常工作?
我正在使用支持包v7 for Android 2.3
答案 0 :(得分:3)
我自己也遇到了这个问题,并找到了解决方案。您应该为tabview创建一个样式,清除背景和填充,并在主题中使用它。
styles.xml:
<style name="Custom.ActionBar.TabView.Empty" parent="@style/Widget.AppCompat.ActionBar.TabView">
<item name="android:background">@null</item>
<item name="android:padding">0dp</item>
</style>
的themes.xml:
<style name="Theme.Custom" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarTabStyle">@style/Custom.ActionBar.TabView.Empty</item>
<item name="actionBarTabStyle">@style/Custom.ActionBar.TabView.Empty</item>
</style>
答案 1 :(得分:1)
对于每个创建的标签对象,只需添加layoutParams:
..
tab.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));
actionBar.addTab(tab);
答案 2 :(得分:0)
在处理actionbarcompat的setCustomView
时,您必须依赖android:margin
和android:padding
请记住,似乎根元素的填充,宽度,高度和边距会被忽略。
答案 3 :(得分:0)
如果您仍然遇到问题,我找到了获取整个空间的方法:ActionBar Tab with custom View not centered