无法在android中更改自定义操作栏背景颜色

时间:2017-08-08 07:08:45

标签: java android tabs android-actionbar

我正在创建一个Android应用程序,在一个活动中我在动作栏的帮助下显示标签,所以我必须更改动作栏背景颜色。但每当我试图改变背景颜色时,它将显示白色背景或黑色背景。那么如何修改操作栏以更改其背景颜色?

以下是我的活动代码: -

public class SavedRecord extends FragmentActivity implements ActionBar.TabListener{

    private ActionBar actionBar;
    private ViewPager viewPager;
    private TabsPagerAdapter mAdapter;

    String[] tabs = {"Audio","Video"};

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.saved_record);

        //initialization
        actionBar = getActionBar();
        viewPager = (ViewPager) findViewById(R.id.view_pager);
        mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

        viewPager.setAdapter(mAdapter);
        actionBar.setHomeButtonEnabled(false);
        actionBar.setIcon(null);
        actionBar.setDisplayUseLogoEnabled(false);
        actionBar.setTitle("Saved Record");
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#ff7043"));
        actionBar.setStackedBackgroundDrawable(colorDrawable);
        for (String tab_name:tabs){
            actionBar.addTab(actionBar.newTab().setText(tab_name).setTabListener(this));
        }

        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            }

            @Override
            public void onPageSelected(int position) {
                actionBar.setSelectedNavigationItem(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });
    }

    @Override
    public void onTabSelected(ActionBar.Tab tab, android.app.FragmentTransaction ft) {
        viewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab, android.app.FragmentTransaction ft) {

    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, android.app.FragmentTransaction ft) {

    }
}

活动的屏幕截图: -

enter image description here

2 个答案:

答案 0 :(得分:1)

我假设您正在使用“常规”ActionBar。

尝试通过导入

来使用SupportActionBar
import android.support.v7.app.ActionBar;

并致电

actionBar = getSupportActionBar();

我认为这应该可以解决您的问题。

答案 1 :(得分:0)

尝试更改应用的风格

<resources>
    <!-- Base application theme. -->
     <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:actionBarStyle">@style/ActionBarStyle</item>
     </style>

     <style name="ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">/*your custom color*/</item>
     </style>
</resources>