Android 如何以编程方式设置ActionBarTab指示器的样式?
我正在我的应用程序中使用ActionBar compact,并创建了2个选项卡和微调器菜单项。现在,我希望通过选定项微调器更改选项卡指示器,如下图所示: 但我不知道该怎么做。我只是用代码在主题中设置样式: Style.xml的一部分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/
<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中使用它。您可以通过滑动选项卡对所有版本使用一种方法。这里有一个官方的样本:。这里还有一个很好的图书馆: