ActionBar上没有应用程序图标

问题描述 投票:32回答:6

这里有很多关于向ActionBar添加图标的问题但没有解决我的问题。如果您知道此问题的副本,请随时发表评论或关闭此问题。

我将我的项目迁移到IntelliJ,我没有遇到过我以前的IDE(Eclipse)的问题。

问题:应用程序图标未显示在ActionBar中。

我认为它应该默认添加,这就是为什么我不能通过它添加它

这是它的XML

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity" >

    <item android:id="@+id/action_settings"
        android:title="@string/action_settings"
        android:orderInCategory="100"
        app:showAsAction="always" />
</menu>

谢谢!

android intellij-idea android-actionbar
6个回答
38
投票

从AppCompat版本21开始,Action Bar遵循material design guidelines并使用Toolbar

  • 标题和副标题。标题应该是工具栏在导航层次结构中的当前位置以及其中包含的内容的路标。字幕(如果存在)应指示有关当前内容的任何扩展信息。如果应用使用徽标图片,则应强烈考虑省略标题和副标题。

在现代Android UI中,开发人员应该更多地依赖于工具栏的视觉上不同的颜色方案而不是应用程序图标。 API 21设备和更新设备不鼓励使用应用程序图标和标题作为标准布局。

但是,如果您想要一个应用程序图标,setLogo()是正确的方法。


25
投票

使用以下代码更新onCreate()方法。

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setLogo(R.drawable.ic_launcher);
    getSupportActionBar().setDisplayUseLogoEnabled(true);
    setContentView(R.layout.activity_main);
}

它对我有用。注意:ic_launcher是您要在操作栏中显示的图标,因为您必须在应用项目的drawable文件夹中添加该图标。


8
投票

在Style.xml中

 <style name="MyTheme_ActionBar" parent="@style/Theme.AppCompat.Light">
   <item name="icon">@drawable/actionbar_logo</item>
  </style>

在活动中添加此内容并尝试

ActionBar mActionBar = getSupportActionBar();
mActionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME);

3
投票

如果您不关心Material主题,并且可以使用看起来更像JellyBean / Kitkat样式的Activity并在Action Bar中包含图标,那么您可以执行以下操作:

首先,从以下位置更改styles.xml中的主题设置:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

对此:

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">

现在将所有活动更改为继承自android.app.Activity而不是android.support.v7.app.ActionBarActivity。那是:

改变这个:

import android.support.v7.app.ActionBarActivity;

public class MainActivity extends ActionBarActivity{

对此:

import android.app.Activity;

public class MainActivity extends Activity {

执行上述两个步骤的结果是AndroidManifest.xml中android:icon属性指定的图标将出现在Action Bar中。


1
投票

真的行。试试这个..将这些行包含在你的onCreate方法中,

ActionBar menu = getSupportActionBar();
menu.setDisplayShowHomeEnabled(true);
menu.setIcon(R.mipmap.jerry);

另外,请确保jerry是mipmap文件夹下的.png图像文件。要在操作栏的开头准确获取图标,请在mipmap文件夹中包含所有屏幕尺寸的jerry文件,如(hdpi,mdpi,xhdpi,xxhdpi,xxxhdpi等)。


0
投票

在操作栏上设置图标

在操作栏上显示图标可以轻松欺骗任何陷入困境的开发人员。请记住这个简单的方法,它永远不会让你陷入困境。

如果你的activity正在扩展活动,

getActionBar().setDisplayShowHomeEnabled(true);

如果您的activity正在扩展AppCompatActivity,

ActionBar actionBar= getSupportActionBar();
actionBar.setIcon(R.mipmap.ic_launcher);
actionBar.setDisplayShowHomeEnabled(true);

它总是对我们有用,记住它。

© www.soinside.com 2019 - 2024. All rights reserved.