【问题标题】:Unable to display menu icons in android application无法在 android 应用程序中显示菜单图标
【发布时间】:2013-12-30 09:38:50
【问题描述】:

请看下面我创建的 menu.xml 文件,我保存在 res-> menu-> 文件夹下

 <item android:id="@+id/menu_About"
      android:icon="@drawable/icon_about"
      android:title="@string/About" />

<item android:id="@+id/menu_Settings"
      android:icon="@drawable/icon_settings"
      android:title="@string/Settings" />

<item android:id="@+id/menu_Exit"
      android:icon="@drawable/icon_exit"
      android:title="@string/Exit" />   

我将 icon_about.png 、 icon_settings.png 、 icon_exit.png 文件保存在 res-> drawable-hdpi 、drawable-ldpi 、 drawable-mdpi 、 drawable-xhdpi 、 drawable-xxhdpi 文件夹下,但是当我的应用程序运行时,这些图标不会不出现。如果我遗漏了什么,请告诉我。

谢谢

【问题讨论】:

    标签: android icons


    【解决方案1】:

    尝试在您的活动中使用它:

    @Override   
    public boolean onCreateOptionsMenu(Menu menu) { 
        Inflate the menu; // this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);       
        return true;    
    }
    

    【讨论】:

    • 这是问题,应该在评论中
    • @Williams:这不是问题,而是解决方案建议。所以,我觉得没问题。
    • IMO,应该在评论中
    • @Williams:为什么如果 Pinki 试图回答这个问题?你可能会对问号感到困惑,我同意最好避免问号,但不幸的是,即使在答案中,很多人也会使用它。只需提出修改建议即可。
    【解决方案2】:
    <item
        android:id="@+id/web_link"
        android:icon="@drawable/menu_About"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:title="Web link"/>
    

    如果你想要总是添加 android:showAsAction="always".. 还有其他选项。像“从不”,如果你想要他们可以通过编程方式添加,它曾经从不显示图标,如果有这个菜单项的地方,其他“ifroom”会出现

    【讨论】:

      【解决方案3】:

      打开您的主 Activity 类文件并输入以下代码。在下面的代码中,每个菜单项都由其在 switch case 语句中的 ID 标识。

      public class MenusActivity extends Activity {
          @Override
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.main);
          }
      
          // Initiating Menu XML file (menu.xml)
          @Override
          public boolean onCreateOptionsMenu(Menu menu)
          {
              MenuInflater menuInflater = getMenuInflater();
              menuInflater.inflate(R.layout.menu, menu);
              return true;
          }
      
          /**
           * Event Handling for Individual menu item selected
           * Identify single menu item by it's id
           * */
          @Override
          public boolean onOptionsItemSelected(MenuItem item)
          {
      
              switch (item.getItemId())
              {
              case R.id.menu_About:
      
                  Toast.makeText(MenusActivity.this, "about is Selected", Toast.LENGTH_SHORT).show();
                  return true;
      
              case R.id.menu_settings:
                  Toast.makeText(MenusActivity.this, "settings is Selected", Toast.LENGTH_SHORT).show();
                  return true;
      
      
              case R.id.menu_Exit:
                  Toast.makeText(MenusActivity.this, "Exit is Selected", Toast.LENGTH_SHORT).show();
                  return true;
      
      
      
              default:
                  return super.onOptionsItemSelected(item);
              }
          }    
      
      }
      

      。最后通过右键单击您的项目来运行您的项目。在 Android 模拟器上单击菜单按钮以启动菜单。

      【讨论】:

      • 我已经在 MainActivity 类中编写了这段代码。菜单选项工作正常,因为当我选择关于菜单选项时,会显示一条消息“关于已选择”。是我的图标没有显示出来。
      【解决方案4】:

      我保留了 icon_about.png 、 icon_settings.png 、 icon_exit.png res-> drawable-hdpi , drawable-ldpi , drawable-mdpi 下的文件, drawable-xhdpi, drawable-xxhdpi 文件夹,但是当我的应用程序运行时, 这些图标不显示。如果我遗漏了什么,请告诉我。

      => 您没有在所有菜单项中包含android:showAsAction 属性。

      【讨论】:

      • @user3060037 如果这对您有所帮助,那么根据 SO 规则,您应该接受/支持答案。干杯!
      【解决方案5】:

      检查您是否使用了正确大小的图标。对于选项菜单,所需的大小是

      ldpi 32 x 32 px
      mdpi: 36 x 36 px
      hdpi: 48 x 48 px
      xhdpi: 64 x 64 px
      

      【讨论】:

      • 是的,这与 ShowAsAction 一起也需要。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      相关资源
      最近更新 更多