Android 如何以编程方式设置ActionBarTab指示器的样式?

Android 如何以编程方式设置ActionBarTab指示器的样式?,android,tabs,android-actionbar-compat,Android,Tabs,Android Actionbar Compat,我正在我的应用程序中使用ActionBar compact,并创建了2个选项卡和微调器菜单项。现在,我希望通过选定项微调器更改选项卡指示器,如下图所示: 但我不知道该怎么做。我只是用代码在主题中设置样式: Style.xml的一部分 <style name="Theme.MyAB" parent="@style/Theme.AppCompat.Light.DarkActionBar"> <item name="actionBarStyle">@style/

我正在我的应用程序中使用ActionBar compact,并创建了2个选项卡和微调器菜单项。现在,我希望通过选定项微调器更改选项卡指示器,如下图所示: 但我不知道该怎么做。我只是用代码在主题中设置样式:

Style.xml的一部分

<style name="Theme.MyAB" parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="actionBarStyle">@style/ActionBar.Solid</item>
        <item name="actionBarTabStyle">@style/ActionBarTabStyle</item>

    </style>

    <style name="ActionBarTabStyle" parent="@style/Widget.AppCompat.ActionBar.TabView">
        <item name="android:background">@drawable/tab_indicator_ab_example</item>
    </style>

@style/ActionBar.Solid
@风格/动作风格
@可绘制/选项卡指示器选项卡示例
以及MyActivity.class中创建选项卡的这一部分

@Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        // on tab selected
        // show respected fragment view
        viewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate our menu from the resources by using the menu inflater.
        getMenuInflater().inflate(R.menu.main, menu);   ;

        MenuItem actionbar_form= menu.findItem(Menus.FORM);

        View view1= (View) MenuItemCompat.getActionView(actionbar_form);
        if (view1 instanceof Spinner)
        {
            final Spinner spinner = (Spinner) view1;
           spinner.setAdapter(adapterSpinnerMenuForm);


            spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

                @Override
                public void onItemSelected(AdapterView<?> parent, View view,
                        int position, long id) {
                    // TODO Auto-generated method stub

                //  TextView txtType= (TextView)spinner.getAdapter().getView(position, null, null).findViewById(R.id.txtType);
                    Variabel.type= adapterSpinnerMenuForm.spinnerNavItem.get(position).getType();

                }

                @Override
                public void onNothingSelected(AdapterView<?> parent) {
                    // TODO Auto-generated method stub

                }
            });


        }
        return true;
}   
@覆盖
已重新选择公共无效页签(页签,碎片事务){
}
@凌驾
已选择的公共事务(选项卡,碎片事务ft){
//在选定的选项卡上
//显示受尊重的片段视图
setCurrentItem(tab.getPosition());
}
@凌驾
已选择公共空页(选项卡,碎片事务ft){
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//使用菜单充气器从资源中为菜单充气。
充气(R.menu.main,menu);
MenuItem actionbar_form=menu.findItem(Menus.form);
View view1=(视图)MenuItemCompat.getActionView(actionbar_表单);
if(微调器的视图1实例)
{
最终微调器微调器=(微调器)视图1;
spinner.setAdapter(适配器羽状);
spinner.setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图、,
内部位置,长id){
//TODO自动生成的方法存根
//TextView txtType=(TextView)微调器.getAdapter().getView(position,null,null).findViewById(R.id.txtType);
Variabel.type=AdapterSpinnerManuform.spinnerNavItem.get(position.getType();
}
@凌驾
未选择公共无效(AdapterView父级){
//TODO自动生成的方法存根
}
});
}
返回true;
}   

那么,如何以编程方式使用“更改指示器”选项卡操作栏呢?对不起,我的英语很好

您好,请尝试此

注意,Android 5.0中不推荐使用操作栏选项卡。但我仍然希望在较旧的Android 5.0中使用它。您可以通过滑动选项卡对所有版本使用一种方法。这里有一个官方的样本:。这里还有一个很好的图书馆: