Android 在活动工具栏中将应用程序图标设置为右侧

Android 在活动工具栏中将应用程序图标设置为右侧,android,Android,我正在使用AppCompact库,在布局/定位方面遇到了一些问题。我想将应用程序图标放在“ActionBar”的右侧。一种方法是在工具栏中定义一个按钮,但是是否有一种标准方法来设置应用程序图标和ActionBar右侧的Up按钮 如上图所示,图标位于左侧,我希望它位于右侧。任何帮助都将不胜感激 注:对于可能面临我的问题的人,使用此代码可以很容易地解决 将此代码添加到清单: <application android:supportsRtl="true"> 除了将布局设置为RTL或自己

我正在使用AppCompact库,在布局/定位方面遇到了一些问题。我想将应用程序图标放在“ActionBar”的右侧。一种方法是在工具栏中定义一个按钮,但是是否有一种标准方法来设置应用程序图标和ActionBar右侧的Up按钮

如上图所示,图标位于左侧,我希望它位于右侧。任何帮助都将不胜感激

注:对于可能面临我的问题的人,使用此代码可以很容易地解决 将此代码添加到清单:

<application android:supportsRtl="true">

除了将布局设置为RTL或自己实现之外,没有其他方法。即使您将
工具栏子类化
并尝试更改
onLayout
,您也需要重新计算所有视图的位置。

android无法在actionbar的右侧设置应用图标,但您仍然可以这样做

创建一个菜单,比如说
main\u menu.xml

<?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/menu_item"
        android:icon="@drawable/your_app_icon"
        android:title="@string/menu_item"
        app:showAsAction="always"/>  //set showAsAction always
                                    //and this should be the only menu item with show as action always

</menu>
完成了!您的应用程序图标现在将显示在ActionBar的右侧

如果菜单中有多个项目,则覆盖活动类中的
on prepareOptions功能表
,并为具有应用程序图标的菜单项设置
设置启用(false)
,这样做会阻止图标被单击

@Override
public boolean onPrepareOptionsMenu(Menu menu){
    menu.findItem(R.id.menu_item).setEnabled(false);

    return super.onPrepareOptionsMenu(menu);
}
现在,您的
MainActivity.java
文件如下所示

@Override
public boolean onCreateOptionsMenu(Menu menu){

    getMenuInflater().inflate(R.menu.main_menu, menu);
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item){

    switch(item.getItemId()){
        case R.id.menu_item:   //this item has your app icon
            return true;

        case R.id.menu_item2:  //other menu items if you have any
            //add any action here
            return true;

        case ... //do for all other menu items

        default: return super.onOptionsItemSelected(item);
    }
}

@Override
public boolean onPrepareOptionsMenu(Menu menu){
    menu.findItem(R.id.menu_item).setEnabled(false);

    return super.onPrepareOptionsMenu(menu);
}

这是唯一可以用来在右侧设置应用程序图标的技巧。

我刚刚在xml中添加了
android:layout\u margintart=“300dp”
,其中声明了
imagebutton

@ShabbirDhangot所以看起来最简单的方法是在工具栏中定义一个成本化的项目?有没有办法隐藏应用程序图标?或者将其工具栏布局从右向左设置?我建议您使用布局创建标题并调整视图。隐藏当前操作栏。另外,如果你不这样做,你可以隐藏动作栏的标志使用的风格。这里描述的很好,对我很有用。谢谢你的帮助。我找到了另一种方法,并更新了我的问题。你认为我使用的方法错了吗?谢谢you@MajidHojati属性
supportsRtl
是在api级别17中添加的,因此它不适用于api<17。仅当您的
minSdkVersion
为17时使用它。资料来源:
@Override
public boolean onPrepareOptionsMenu(Menu menu){
    menu.findItem(R.id.menu_item).setEnabled(false);

    return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onCreateOptionsMenu(Menu menu){

    getMenuInflater().inflate(R.menu.main_menu, menu);
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item){

    switch(item.getItemId()){
        case R.id.menu_item:   //this item has your app icon
            return true;

        case R.id.menu_item2:  //other menu items if you have any
            //add any action here
            return true;

        case ... //do for all other menu items

        default: return super.onOptionsItemSelected(item);
    }
}

@Override
public boolean onPrepareOptionsMenu(Menu menu){
    menu.findItem(R.id.menu_item).setEnabled(false);

    return super.onPrepareOptionsMenu(menu);
}