ActionBar带图标&标题

时间:2017-11-01 08:43:17

标签: java android

我有一个现有的应用程序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>

4 个答案:

答案 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
  • 中使用setNavigationIconToolbar

试试这个。

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>