Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将项目正确添加到actionbar_Android_Xml - Fatal编程技术网

Android 将项目正确添加到actionbar

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 它可以工作,我的意思是我可以看到

我需要帮助找到控制actionbar的正确方法

在onCreate函数中,我添加了:

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);
}