Android 将项目正确添加到actionbar
我需要帮助找到控制actionbar的正确方法 在onCreate函数中,我添加了:Android 将项目正确添加到actionbar,android,xml,Android,Xml,我需要帮助找到控制actionbar的正确方法 在onCreate函数中,我添加了: getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); getSupportActionBar().setCustomView(R.layout.actionbar); 并将actionbar.xml添加到布局文件夹中,其中包含3项:TextView(应用程序名称)和2个ImageView 它可以工作,我的意思是我可以看到
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.actionbar);
并将actionbar.xml添加到布局文件夹中,其中包含3项:TextView(应用程序名称)和2个ImageView
它可以工作,我的意思是我可以看到这个新的actionbar,但我敢肯定我做得不对,在教程中,我读到他们在谈论将那些我找不到的项目添加到menu.xml文件中,并使用onOptionsItemSelected函数来设置行为
由于我是一个乞丐,希望您能解释一下我在做什么,为什么错了,以及如何正确使用菜单。xml好的,首先您是对的,Android有一个现成的解决方案,可以在操作栏上显示“操作按钮”和标题 1.标题 创建活动时,它会将一些代码添加到AndroidManifest.xml中,示例如下:
<activity
android:name="AddAddressActivity"
android:label="@string/title_activity_add_address" >
</activity>
稍后,您将在res/menu文件夹下创建address_list.xml,并在其中放置操作按钮列表
<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"/>
注意:操作栏的空间有限,因此如果你有很多菜单,它会折叠成右上角的“三点”图标你说的是两个不同的东西。menu.xml文件用于菜单项,显示在ActionBar的右侧。@DanielNugent是对的,我的意思是你正在合并两个不同的东西。我的目标是调整ActionBar,因为我的手机语言是从右到左的。我通过创建这个ActionBar.xml并指定布局方向找到了解决方案,现在我想给它添加按钮,但显然是做错了。我希望它能澄清我想做什么。谢谢感谢Richard提供的详细答案,它可以工作,但有一个问题-在我制作的actionbar.xml中,我可以添加-android:layoutDirection=“ltr”,因为我的手机显示的所有内容都是“rtl”,在这个新的menu.xml文件中,我不能添加这个(我可以,但它什么也不做),所有图标都显示在“三个点”中。我如何解决这个问题?好的,我将android:supportsRtl=“true”更改为android:supportsRtl=“false”,现在是从左到右,但所有项目仍然在3个点中(即使我只使用1个项目,所以还有空间),为什么会发生这种情况?好的,谢谢,我解决了它。刚刚将AndroidManfiest.xml中的-android:supportsRtl=“true”改为android:supportsRtl=“false”,位于“太好了!很高兴我能提供帮助。如果是帮助,请将其标记为答案:)
@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;
}
<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"/>
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_add:
//do something
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}