【问题标题】:No App Icon on ActionBarActionBar 上没有应用程序图标
【发布时间】:2014-12-30 11:51:19
【问题描述】:

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

我将我的项目迁移到 IntelliJ,并且在我以前的 IDE (Eclipse) 中没有遇到这个问题。

问题:应用图标未显示在操作栏中。

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

这是它的 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


【解决方案1】:

从 AppCompat 版本 21 开始,操作栏遵循 material design guidelines 并使用 Toolbar

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

在现代 Android 用户界面中,开发人员应该更多地依赖于工具栏视觉上独特的配色方案,而不是应用程序图标。 不鼓励在 API 21 及更高版本的设备上使用应用程序图标加标题作为标准布局。

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

【讨论】:

  • 很好的答案!恕我直言,答案应该是这样写的。
【解决方案2】:

如果您不关心 Material 主题并且可以拥有一个看起来更像 JellyBean/Kitkat 风格并在操作栏中包含图标的 Activity,您可以执行以下操作:

首先,更改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中。

【讨论】:

    【解决方案3】:

    IN 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);
    

    【讨论】:

    • 我也添加了“ActionBar.DISPLAY_SHOW_TITLE”来获取标题。
    【解决方案4】:

    用下面的代码更新你的 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 是您要在操作栏中显示的图标,为此您必须将图标添加到应用项目的可绘制文件夹中。

    【讨论】:

    • 也为我工作。 :) 惊人的。最简单的解决方案。复制粘贴 3 行代码,大功告成。
    【解决方案5】:

    确实有效。尝试这个.. 将这些行包含到您的 onCreate 方法中,

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

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

    【讨论】:

      【解决方案6】:

      在操作栏上设置图标

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

      如果您的activity 正在扩展Activity

      getActionBar().setDisplayShowHomeEnabled(true);
      

      如果您的 activity 正在扩展 AppCompatActivity

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-30
        • 1970-01-01
        • 2018-06-06
        • 2023-03-26
        • 2017-04-10
        • 1970-01-01
        • 2023-03-03
        相关资源
        最近更新 更多