【问题标题】:Failed to change custom actionbar background color in android无法在 android 中更改自定义操作栏背景颜色
【发布时间】:2017-08-08 07:08:45
【问题描述】:

我正在创建一个 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) {

    }
}

以及活动截图:-

【问题讨论】:

  • 是的,我也试过了,但它不能正常工作,它已将操作栏背景颜色变为白色。 @MohitSuthar
  • @GRV_Droid 到目前为止有什么进展吗?
  • 是的,我得到了上述问题的解决方案@W3hri

标签: java android tabs android-actionbar


【解决方案1】:

我假设您使用的是“常规”ActionBar。

尝试通过导入来使用 SupportActionBar

import android.support.v7.app.ActionBar;

并调用

actionBar = getSupportActionBar();

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

【讨论】:

    【解决方案2】:

    尝试改变你应用的风格

    <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>
    

    【讨论】:

      猜你喜欢
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多