gpt4 book ai didi

java - 与仅创建布局相比,创建自定义 ActionBar 有何优势?

转载 作者:行者123 更新时间:2023-12-02 10:44:24 27 4
gpt4 key购买 nike

我一直在尝试实现自定义操作栏,但由于以下代码,我不断收到空指针异常。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setDisplayShowCustomEnabled(true);
getSupportActionBar().setCustomView(R.layout.home_action_bar);
}

显然,getSupportActionBar 返回 null。在尝试让它工作几个小时但没有成功后,我开始思考为什么我真的需要将它变成一个自定义操作栏。我能够创建我想要的设计,它看起来很好,如下图所示,没有上面的代码,或者没有尝试创建自定义操作栏,白色区域是一个 ScrollView ,内容将位于操作栏。所以我现在的问题是,有必要让自定义操作栏工作吗?为什么上面的代码不起作用?

enter image description here

最佳答案

Why is getSupportActionBar returning null?

您可能正在使用NoActionBar主题如 Theme.AppCompat.Light.NoActionBar ,

删除NoActionBar部分。

喜欢Theme.AppCompat.LightTheme.AppCompat.Light.DarkActionBar

Why use ActionBar instead of layout?

原因1

创建自定义布局会添加大量样板代码。 Actionbar通常在应用程序的所有 Activity 中保持一致。因此,如果您使用布局,那么您最终将向所有 Activity 布局添加相同的布局代码。 (即使您使用 <layout/> 标签包含布局,它仍然是不必要的代码)。

原因2

您将拥有action items在你的ActionBar 。使用自定义布局,您最终会调用 findViewById关于这些action items在你的每一项 Activity 中。 findViewById是一项成本高昂的操作。因此,它肯定会影响您应用程序的性能(可能非常微不足道,但仍然如此)。另外,这是您需要在每个 Activity 中编写的不必要的代码。

关于java - 与仅创建布局相比,创建自定义 ActionBar 有何优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52692082/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com