【问题标题】:Icon does not show up on the action bar - Android图标未显示在操作栏上 - Android
【发布时间】:2015-04-20 16:24:47
【问题描述】:

我试图在操作栏上显示一个相机图标,但它不起作用。菜单显示并且工作正常,但相机图标不显示。你能帮帮我吗?

提前谢谢你。

菜单代码:

<?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" >

<item android:id="@+id/action_camera"
    android:orderInCategory="0"
    android:icon="@drawable/ic_action_camera"
    android:title="@string/action_camera"
    app:showAsAction="always" />

<item android:id="@+id/action_delete"
    android:title="@string/action_delete"
    app:showAsAction="never" />

</menu>

清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="br.com.cfb.daily_selfie" >

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

<uses-feature
    android:name="android.hardware.camera"
    android:required="true" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_action_camera"
    android:label="@string/app_name"
    android:theme="@style/AppBaseTheme" >
    <activity
        android:name=".DailySelfieActivity"
        android:label="@string/app_name"
        android:launchMode="singleTop">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

    <activity
        android:name=".DisplayPictureActivity"
        android:label="@string/title_activity_display_picture"
        android:parentActivityName=".DailySelfieActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="br.com.cfb.daily_selfie.DailySelfieActivity" />
    </activity>

    <receiver android:name=".AlarmNotificationReceiver" >
    </receiver>

 </application>

 </manifest>

波纹管 onCreate()

public class DailySelfieActivity extends ListActivity {

static final int REQUEST_IMAGE_CAPTURE = 1;
public final static String EXTRA_MESSAGE =    "br.com.cfb.daily_selfie.MESSAGE";
private static final String TAG = "DS-DailySelfieActivity";
private final static int INTENT_ID = 322;

private SelfieViewAdapter mAdapter;
private SelfieRecord mSelfieRecord;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ListView selfieListView = getListView();
    final View footerView = ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_view, null, false);
    selfieListView.addFooterView(footerView);
    mAdapter = new SelfieViewAdapter(this.getApplicationContext());
    loadListAdapter();
    setListAdapter(mAdapter);

    //      Create Alarm to take a selfie
    Alarm mAlarm = new Alarm(getApplicationContext());

    //      Enable filtering when the user types in the virtual keyboard
    //      selfieListView.setTextFilterEnabled(true);

   //      Set an setOnItemClickListener on the ListView
    selfieListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {

   //              Display a Toast message indicting the selected item
            Toast.makeText(getApplicationContext(), "position = " +position + " id = " +id
                    , Toast.LENGTH_LONG).show();
            mSelfieRecord = (SelfieRecord) mAdapter.getItem(position);
            Toast.makeText(getApplicationContext(), "Date = " +mSelfieRecord.getDate()
                    , Toast.LENGTH_LONG).show();
          //              Display Picture
            Intent intent = new Intent(DailySelfieActivity.this, DisplayPictureActivity.class);
            Bitmap mPicture = mSelfieRecord.getPicture();
            intent.putExtra(EXTRA_MESSAGE, mPicture);
            startActivity(intent);
        }
    });
}

波纹管 OnCreateOptionsMenu

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

【问题讨论】:

  • 请发布您的活动。
  • 这是你的可绘制文件夹中的图标?
  • 你是在onCreateOptionsMenuinflater.inflate(R.menu.menu_file_name, menu)中添加菜单文件的名称吗?
  • 请发布您的活动代码
  • @M_Y。是的,我做到了。我添加了 OnCreateOptionsMenu。菜单工作正常,只是图标不显示。

标签: android android-actionbar icons


【解决方案1】:

ic_menu_camera 呢?尽管我确实在其他地方看到了对ic_action_camera 的引用,但这对我来说并没有出现。我确实可以访问android:icon="@android:drawable/ic_menu_camera"(注意添加了@android:drawable

或者,正如@acostela 所指出的,确保它在您的可绘制文件夹中,以便仅使用 android:icon="@drawable/ic_action_camera".

【讨论】:

  • @Xarep,ic_action_camera 它位于可绘制目录中。我也改成 android:icon="@android:drawable/ic_menu_camera" 并运行应用程序,但图标仍然没有出现。谢谢。
  • 大家好,我原来的 Activity 是扩展一个 ListView,所以我更改并扩展了 ActionBar,它运行良好。
  • 嗯,不知道为什么扩展 ListActivity 会导致这个问题,但很高兴你让它工作@Carlos
【解决方案2】:

我原来的 Activity 是扩展一个 ListView,所以我更改并扩展了 ActionBar,它运行良好。

谢谢你, 卡洛斯

【讨论】: