【问题标题】:set app icon to right side in activity tool bar在活动工具栏中将应用程序图标设置为右侧
【发布时间】:2015-04-09 03:12:05
【问题描述】:

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

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

P.s:对于可能遇到我的问题的人,可以使用此代码轻松修复 将此代码添加到清单中:

<application android:supportsRtl="true">

然后在 Oncreate 上写下这段代码:

getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);

【问题讨论】:

  • @ShabbirDhangot 所以似乎最简单的方法是在工具栏中定义一个定制项目?有什么办法可以隐藏应用程序图标?或将其工具栏布局设置为从右到左?
  • 我建议您使用布局创建标题并调整您的视图。隐藏当前操作栏。另外,如果您不采用这种方式,则可以使用样式隐藏操作栏徽标。这里描述stackoverflow.com/questions/14606294/…
  • 太好了,它对我有用。

标签: android


【解决方案1】:

android 无法在操作栏右侧设置应用图标但您仍然可以这样做

创建一个菜单,比如main_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>

现在只需在您的活动类中覆盖 onCreateOptionsMenu

将此添加到MainActivity.java

@Override
public boolean onCreateOptionsMenu(Menu menu){

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

完成了!现在,您的应用图标将显示在 ActionBar 的右侧。

如果您菜单中有多个项目,则 覆盖 Activity 类中的onPrepareOptionsMenu 并为具有应用程序图标的菜单项设置setEnabled(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);
}

这是唯一可用于在右侧设置应用图标的技巧。

【讨论】:

  • 谢谢你的帮助..我找到了另一种方法,我更新了我的问题..你认为我使用的方法是错误的吗?谢谢
  • @MajidHojati supportsRtl 属性是在 api 级别 17 中添加的,因此它不适用于 api minSdkVersion 为 17 时才使用它。来源:developer.android.com/guide/topics/manifest/…
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    我刚刚在声明imagebutton 的xml 中添加了android:layout_marginStart="300dp"

    【讨论】:

      猜你喜欢
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-02
      • 2014-10-12
      • 1970-01-01
      • 2014-12-18
      相关资源
      最近更新 更多