我想在我的应用程序中使用操作栏。到目前为止,我能够从支持库中添加操作栏。现在我想在我的操作栏中添加项目。我希望项目的图标显示在我的操作栏中,因此我执行了以下操作:
首先我创建了menu.xml文件
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Search, should appear as action button -->
<item android:id="@+id/action_locate"
android:icon="@drawable/ic_action_location_found"
android:title="@string/locate"
android:showAsAction="always" />
<!-- Settings, should always be in the overflow -->
我将这些功能添加到我的mainActivity
@Override
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, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
switch (item.getItemId()) {
case R.id.action_locate:
Toast.makeText(this,"locate is selected",Toast.LENGTH_SHORT).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
当我运行我的应用程序时,我只看到操作栏的标题,找不到定位图标。当我触摸手机上的选项按钮时,会出现一个仅位于其中的列表。我需要的是在操作栏的右角出现定位图标。任何人都可以告诉我我做错了什么以及为什么它没有出现在动作栏的右上角?
答案 0 :(得分:1)
您需要添加命名空间
xmlns:yourapp="http://schemas.android.com/apk/res-auto"
然后
yourapp:showAsAction="always"
编辑:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
<!-- Search, should appear as action button -->
<item android:id="@+id/action_locate"
android:icon="@drawable/ic_action_location_found"
android:title="@string/locate"
yourapp:showAsAction="always" />
引用文档
使用支持库中的XML属性
请注意,上面的showAsAction属性使用自定义命名空间 在标签中定义。使用任何XML时都需要这样做 由支持库定义的属性,因为这些属性可以 旧设备上的Android框架中不存在。所以你必须使用 您自己的命名空间作为由...定义的所有属性的前缀 支持图书馆。
答案 1 :(得分:0)
试试这个: -
菜单Xml:
<item
android:id="@+id/action_location_found"
android:clickable="true"
android:icon="@drawable/more_btn"
android:showAsAction="always"
android:title="action_location_found">
<menu>
<item
android:id="@+id/action_user_profile"
android:orderInCategory="1"
android:showAsAction="never"
android:title="User Profile">
</item>
<item
android:id="@+id/action_settings"
android:orderInCategory="2"
android:showAsAction="never"
android:title="Settings">
</item>
</menu>
</item>
在您的活动中: -
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action buttons
switch (item.getItemId()) {
case R.id.action_user_profile:
Toast.makeText(getApplicationContext(), "User Profile",
Toast.LENGTH_LONG).show();
break;
case R.id.action_settings:
Toast.makeText(getApplicationContext(), "Setting",
Toast.LENGTH_LONG).show();
break;
default:
return true;
}
return super.onOptionsItemSelected(item);
}