为什么我的App Bar图标在我构建时不显示?

时间:2017-07-16 21:41:09

标签: android

我正在使用App Bar在我的Android应用中进行导航。我正在使用xml菜单文件。在设计视图中,图标将显示,如第一张图片中所示:

Design view of Android Studio

但是当我在模拟器中构建并启动应用程序时,appBar会显示图标,如下所示:

Android emulator without the icon

我也在物理设备上对此进行了测试,我得到了完全相同的问题。

这是我的menu.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <!-- Top bar navigation menu-->

    <!-- "Show EPA scale", should appear as action button if possible -->
    <item
        android:id="@+id/showEpaScale"

        android:icon="@mipmap/ic_wb_sunny_black_24dp"
        android:title="@string/epaScaleUri"
        app:showAsAction="ifRoom"/>

</menu>

这是我的MainActivity:

package com.weebly.stevelosk.uv_buddy;

import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.support.annotation.ArrayRes;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity {

    private TextView resultTextView;
    private TextView UV_indexDescriptionTextView;
    private EditText enterZipCodeEditText;
    private Button getUV_withZipCodeButton;
    private Button getUV_withLocationButton;
    private Toolbar mActionBar;

    private Integer[] uviArray;

    private String TAG = "Main Activity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mActionBar = (Toolbar) findViewById(R.id.my_toolbar);
        setSupportActionBar(mActionBar);
...
@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.showEpaScale:
                // User chose the "Settings" item, show the app settings UI...
                // Do stuff
                return true;

            default:
                return true;
        }
    }

我错过了什么吗?我已经按照Android开发人员培训(设置应用程序栏)和(添加和处理操作)中的说明进行操作。我也尝试在stackoverflow上搜索这个问题的几个变体,但我找到的结果都没有真正符合我的问题。我尝试使用一个已知的好图标&#34;相反,它也出现在设计视图中,但不是在我在模拟器中编译和运行时。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您还需要覆盖onCreateMenuInflater

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.game_menu, menu);
    return true;
}