我有一个现有的应用程序ActionBar。操作栏有一个后退按钮(在哪里有人),图标,标题左侧对齐,右侧是选项菜单。我最近将AppCompat库添加到了项目中。现在图标消失了。背面,标题&选项显示正常。
所以我开始创建一个工具栏并将其包含在布局中。问题是有很多屏幕已经开始崩溃,因为我没有包括工具栏。另外,如果添加NoActionBar主题,则getSupportActionBar返回null。
有没有一种简单的方法可以保留旧的操作栏(不添加工具栏)?
代码
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
if(actionBar != null) {
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null)
setSupportActionBar(toolbar);
actionBar.setTitle("Scan Code");
}
工具栏布局
<android.support.design.widget.AppBarLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways">
<android.support.v7.widget.Toolbar
android:minHeight="?attr/actionBarSize"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:navigationIcon="@drawable/app_icon">
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
风格
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="icon">@mipmap/app_icon</item>
</style>
答案 0 :(得分:2)
当我想在所有活动中用工具栏替换操作栏时,我会覆盖BaseActivity中的setContentView()方法。它看起来像这样:
Result of looking for 'Tan' in 'xyzzyTan' is 0
Result of looking for 'Tan' in 'xyzzyTan7' is 1
Result of looking for 'Tan' in 'xyzzyTangy4' is 0
Result of looking for 'Tan' in 'xyzzyTangyTan12' is 1
答案 1 :(得分:2)
解决方案很简单。您需要一个特定屏幕的自定义工具栏。您已将apptheme = AppTheme.NoActionBar
。这意味着您的所有屏幕都没有工具栏。
首先将您的appthem更改为默认值。
<style name="AppStyle" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="icon">@mipmap/app_icon</item>
</style>
如果您只想为一个屏幕更改工具栏,您可以添加与Apptheme相同的自定义样式。
<style name="CustomStyle" parent="Theme.AppCompat.Light.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="icon">@mipmap/app_icon</item>
</style>
在清单文件中声明此活动时添加此样式。
<activity
android:theme="@style/CustomStyle"
android:name=".MyActivity" />
答案 2 :(得分:0)
android.support.v7.app.ActionBar
setTitle
setNavigationIcon
,Toolbar
试试这个。
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
// App Logo
toolbar.setLogo(R.mipmap.ic_launcher);
// Title
toolbar.setTitle("My Title");
setSupportActionBar(toolbar);
// Navigation Icon
toolbar.setNavigationIcon(R.mipmap.ic_launcher);
答案 3 :(得分:0)
请尝试删除 android.support.v7.app.ActionBar
toolbar = (Toolbar) findViewById(R.id.ar_toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Title");
getSupportActionBar().setIcon(R.mipmap.ic_launcher);
将此主题应用于您的活动
<style name="AccountSetting" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimaryDark">@color/colorWhite</item>
<item name="colorPrimary">@color/colorWhite</item>
<item name="colorAccent">@color/colorAccent</item>
</style>