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