如何更改 Android 中各个片段的 ActionBar 颜色?

Posted

技术标签:

【中文标题】如何更改 Android 中各个片段的 ActionBar 颜色?【英文标题】:How can I change the ActionBar color of individual fragments in Android? 【发布时间】:2020-01-23 01:31:07 【问题描述】:

有什么办法可以改变Fragment的ActionBar颜色,将ActionBar中显示的标题改成被按下的菜单选项的标题?

【问题讨论】:

【参考方案1】:

如果您使用的是 AppCompat,则必须始终调用 getSupportActionBar()

更改标题: getSupportActionBar().setTitle("Your Title");

改变颜色: getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.YOUR_COLOR));

如果在片段中:

更改标题: getActivity().getActionBar().setTitle("YOUR TITLE");

改变颜色: getActivity().getAcationBar().setBackgroundDrawable(new ColorDrawable(Color.YOUR_COLOR));

希望对你有帮助

【讨论】:

我可以用 getActivity().setTitle("Test");但是,当我实现颜色时,应用程序在打开我更改颜色的片段时崩溃。 getActivity()之后使用getActionBar() 是的,我试过了。代码上传正常,我可以将我的应用程序打开到其主屏幕,但是当我单击菜单图标将我带到带有更改颜色操作栏的片段时,应用程序崩溃了。【参考方案2】:

这是用java编写的建议答案:

  getActionBar().setTitle("Test");
  getActionBar().setBackgroundDrawable(new ColorDrawable("COLOR"));

【讨论】:

我可以用 getActivity().setTitle("Test");但是,当我使用您的或@Muhammad 的代码实现颜色时,应用程序在打开我更改颜色的片段时崩溃。【参考方案3】:

如果您使用支持库:

android.support.v7.app.ActionBar supportActionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();

if (supportActionBar  != null) 
    supportActionBar.setTitle("My action bar title");
    View view = new View(getContext());
    view.setBackgroundColor(getResources().getColor(R.color.my_color)); 
    supportActionBar.setBackgroundDrawable(view.getBackground());

否则:

android.app.ActionBar actionBar = getActivity().getActionBar();
if (actionBar != null) 
    actionBar.setTitle("My action bar title");
    View view = new View(getContext());
    view.setBackgroundColor(getResources().getColor(R.color.my_color));         
    actionBar.setBackgroundDrawable(view.getBackground());

【讨论】:

以上是关于如何更改 Android 中各个片段的 ActionBar 颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改片段的大小?

如何在Android的谷歌地图片段中更改默认的蓝色圆形位置图标?

如何从片段更改 Tablayout 的背景颜色?

当sqlite android片段中的数据更改或删除时如何刷新recyclerview?

更改片段时显示 ProgressBar - Android

Android Honeycomb:如何更改 FrameLayout 中的片段,而不重新创建它们?