如何更改 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的谷歌地图片段中更改默认的蓝色圆形位置图标?