Android的ActionBar.Tab setCustomView()不fill_parent

我用这个布局使用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> 

这是我的function设置的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> 

结果接缝看起来像这样(灰色背景左上angular的标签): 在这里输入图像说明

我如何使我的自定义视图来填充整个选项卡,并正常工作?

我正在使用Android 2.3的支持包v7

Solutions Collecting From Web of "Android的ActionBar.Tab setCustomView()不fill_parent"

刚刚碰到这个,找出解决办法。 你应该为tabview创build一个清除背景和填充的风格,并在你的主题中使用它。

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> 

为每个创build的选项卡对象添加layoutParams:

 .. tab.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)); actionBar.addTab(tab); 

在处理actionbarcompat的setCustomView时,必须依赖android:marginandroid:padding

请记住,似乎根元素的填充,宽度,高度和边距将被忽略。

如果你仍然有这个问题,我find了一个方法来获得整个空间: 与自定义视图不居中的ActionBar选项卡