在Android工具栏中添加图标

5

我有两个活动

  • MainActivity
  • DetailActivity

我的MainActivity.xml有AppBarLayout和Toolbar元素。在Main Activity.java中,我使用以下代码设置工具栏中的图标:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// setting icon
getSupportActionBar().setIcon(R.mipmap.ic_launcher);

同样的代码在详细活动中无法运行。 详细活动默认有工具栏。我也可以使用以下代码在工具栏中设置标题:

getSupportActionBar().setTitle(String title);

但是,我无法在详细活动中使用以下方法设置图标:
getSupportActionBar().setIcon(R.mipmap.ic_launcher);

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<uses-permission android:name="android.permission.INTERNET" />

<application
    android:name=".App"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".apod_main"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".apod_detail"></activity>
</application>

构建配置:

Android API 26
Build Tools Version 26.0.1

2个回答

12

试试这个:

getSupportActionBar().setDisplayShowTitleEnabled(true);  
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);

谢谢! 这对我有用。getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setIcon(R.mipmap.ic_launcher); - omer
3
请注意,getSupportActionBar().setDisplayShowHomeEnabled(boolean) 可能会产生 NullPointerException,在使用它之前要执行空指针检查。 - Yupi
@Yupi,为了避免空指针异常,请将命令放置在onPrepareOptionsMenu方法中。 - Eugene Kartoyev
我们如何将点击监听器添加到这个图标中? - Md. Masum Billah

3

如果你想在你的操作栏中添加返回箭头,请尝试以下方法

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher)

1
因为我想要添加我的应用图标而不是返回箭头,所以我必须在这两行代码之前作为第一行添加 getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher);。那时就不需要最后一行了。 - 1111161171159459134

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接