我需要帮助找出控制动作栏的正确方法。
在onCreate函数中,我添加了:
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.actionbar);
将actionbar.xml添加到布局文件夹中,其中包含3个项目:TextView(应用程序名称)和2个ImageViews。
它有效,我的意思是我可以看到这个新的动作栏,但我非常确定我做错了方法,在教程中我正在阅读他们正在谈论将这些项目添加到我无法找到的menu.xml文件,并使用onOptionsItemSelected函数来设置行为。
作为一名初学者,我会很感激地解释我在做什么,为什么会出错,以及如何使用menu.xml正确地做到这一点
答案 0 :(得分:3)
好的,首先你是对的,Android有一个开箱即用的解决方案来放置" Action Button"和行动栏上的标题
1.Title
当你创建一个Activity时,它会在你的AndroidManifest.xml中添加一些代码,这是一个例子:
<activity
android:name="AddAddressActivity"
android:label="@string/title_activity_add_address" >
</activity>
所以你通过改变android:label来改变你的头衔,最好的做法就是你需要把你所有的字符串资产放在res / values / string.xml下这样
<string name="title_activity_add_address">Add New Address</string>
首先将此覆盖方法添加到您的活动
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.address_list, menu);
return true;
}
稍后,您在res / menu文件夹下创建address_list.xml,在其中您可以将Action Button的列表放在那里
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.vi8e.giant.AddressListActivity">
<item
android:id="@+id/action_add"
android:orderInCategory="100"
android:showAsAction="always"
android:icon="@drawable/ic_action_new"
android:title="@string/action_save"/>
Android:标题是放置您的菜单标题,当您长按菜单时,此标题会显示出来 Android:此处的图标是您要为菜单显示的图像,将图像放在res / drawable下
编辑:忘了提及如何触发菜单 您可以在Activity上放置onOptionsItemSelected方法,这是示例
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_add:
//do something
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
注意:Action Bar的空间有限,所以如果你有很多菜单,它会崩溃成三个点&#34;右上角的图标