自定义操作栏选项卡视图

Posted

技术标签:

【中文标题】自定义操作栏选项卡视图【英文标题】:customize action bar tabview 【发布时间】:2012-08-10 14:23:02 【问题描述】:

我正在尝试在操作栏中创建一个自定义选项卡视图,如下所示:

我得到了这个观点:

我想更改标签视图指示器的背景,因此背景颜色变得不可见,并且我们在选定的标签视图指示器下方有绿线。

这是我的代码(我使用默认的 tabview):

public class BaseActivity extends Activity

    ActionBar bar;

    @Override
    public void onCreate(Bundle savedInstanceState)
    
        super.onCreate(savedInstanceState); setContentView(R.layout.base_activity);

        bar = getActionBar(); 

        // Change action bar background

        BitmapDrawable background = new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.background_actionbar)); background.setTileModeX(android.graphics.Shader.TileMode.REPEAT); 

        bar.setBackgroundDrawable(background);

        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

        ActionBar.Tab tabA = bar.newTab().setText(getResources().getString(R.string.documents)); 

        ActionBar.Tab tabB = bar.newTab().setText(getResources().getString(R.string.videos)); 

        ActionBar.Tab tabC = bar.newTab().setText(getResources().getString(R.string.menu_settings)); 

        Fragment fragmentA = new DocumentsListFragment();

        Fragment fragmentB = new VideosListFragment();

        Fragment fragmentC = new UserAccountFragment();

        tabA.setTabListener(new MyTabsListener(fragmentA)); 

        tabB.setTabListener(new MyTabsListener(fragmentB)); 

        tabC.setTabListener(new MyTabsListener(fragmentC)); 

        bar.addTab(tabA);

        bar.addTab(tabB);

        bar.addTab(tabC);
    


    protected class MyTabsListener implements ActionBar.TabListener
    
        private Fragment fragment;

        public MyTabsListener(Fragment fragment) 
            this.fragment = fragment; 

        @Override

        public void onTabSelected(Tab tab, FragmentTransaction ft)
        
            ft.replace(R.id.fragment_place, fragment, null); 

        @Override

        public void onTabReselected(Tab tab, FragmentTransaction ft) 
            // TODO Auto-generated method stub

        

        @Override

        public void onTabUnselected(Tab tab, FragmentTransaction ft) 
            // TODO Auto-generated method stub

        
    


拜托,我怎样才能膨胀那些标签视图指示器。

【问题讨论】:

实际上我正在尝试实现一个选项卡视图,就像你得到的视图一样,但我无法成功,你能告诉你如何实现它,或者提供任何代码示例吗?! 【参考方案1】:

添加这些都在styles.xml中的values下

 <style name="Theme.AndroidDevelopers" parent="Theme.Sherlock.Light.ForceOverflow"> 
 <item name=" android:actionBarItemBackground">@drawable/ad_selectable_background
 </item>
    <item name="android:actionBarTabStyle">@style/MyActionBarTabStyle</item>
    <item name="actionBarTabStyle">@style/MyActionBarTabStyle</item>
 </style>




<style name="MyActionBarTabStyle" parent="Widget.Sherlock.Light.ActionBar.TabBar">
    <item name="android:background">@drawable/actionbar_tab_bg</item>
   <item name="android:gravity">center</item>
   <item name="android:layout_gravity">center</item>
    <item name="android:paddingLeft">10dp</item>
    <item name="android:paddingRight">10dp</item>
</style>

这类似于您的选项卡选择器:

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ad_tab_selected_pressed_holo"           android:state_selected="true"/>
<item android:drawable="@android:color/transparent"/>

【讨论】:

我收到 htis 错误:错误:检索项目的父项时出错:未找到与给定名称“Widget.Sherlock.Light.ActionBar.TabBar”匹配的资源。我正在为我的项目使用 android 3.0

以上是关于自定义操作栏选项卡视图的主要内容,如果未能解决你的问题,请参考以下文章

在 UITabBarController 中自定义更多选项卡

单击 UITabBarController 时的自定义操作

如何让自定义标签栏显示标签栏项目在 Xcode 中设置的选定图像?

将浮动操作按钮添加到选项卡栏控制器内的视图控制器

如何在 Flutter 中创建像这样的自定义可滑动标签栏?

具有自定义视图的自定义更多选项卡