我从一个片段回到我的主要活动,为了某些逻辑,我必须改变操作栏菜单上图标的外观。
这是操作栏上的菜单:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="it.gn.sfa.Main">
<item
android:id="@+id/action_search"
android:actionViewClass="android.widget.SearchView"
android:icon="@drawable/ic_action_search"
android:showAsAction="collapseActionView|ifRoom"
android:title="Search" />
<item
android:id="@+id/action_filter"
android:icon="@drawable/ic_action_filter_empty"
android:showAsAction="ifRoom"
android:title="Filter" />
<item
android:id="@+id/action_new"
android:icon="@drawable/ic_action_new"
android:showAsAction="ifRoom"
android:title="New" />
</menu>
我必须更改sencond项目(id为action_filter
的项目)。
我尝试过不同的解决方案,在不同的帖子中找到。评分最高的是
mOptionsMenu.getItem(0).setIcon(getResources().getDrawable(R.drawable.ic_action_filter));
但似乎没有用。
另一方getActionBar().setIcon(getResources().getDrawable(R.drawable.ic_action_filter));
更改徽标,我不想这样做。
如何更改菜单上的第二项?
答案 0 :(得分:17)
尝试这个
mOptionsMenu.findItem(R.id.action_filter).setIcon(R.drawable.ic_action_filter);
假设您已将所有内容设置为
中的mOptionsMenu
private Menu mOptionsMenu;
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
// inflating your menu here
mOptionsMenu = menu;
return super.onCreateOptionsMenu(menu);
}
希望有所帮助:)
答案 1 :(得分:3)
我希望对你有所帮助
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle(Html.fromHtml("<font color='#ffffff'>" + "Messages" + "</font>"));
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.messagebar_color)));
getSupportActionBar().setHomeAsUpIndicator(R.drawable.back_arrow_black);
答案 2 :(得分:1)
您必须修改 onCreateOptionsMenu(菜单菜单)
我以编程方式更改了搜索栏的颜色。我在这里发布代码。希望它有所帮助。
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.items, menu);
menu.getItem(0).setIcon(getTintedDrawable(R.drawable.search, R.color.blue));
return super.onCreateOptionsMenu(menu);
}
其中 getTintedDrawable()是我创建的一个返回drawable的函数。所以你需要做的就是用你的drawable替换getTintedDrawable(R.drawable.search, R.color.blue)
。
注意:我使用了menu.getItem(0)
我的代码,因为我在menu / items.xml中只定义了一个项目。如果你有多个尝试不同的值(从0到1少于菜单项的数量)。我的猜测是它定义项目的数量,但我不太确定。
答案 3 :(得分:0)
我设法以这种方式旋转/更改图标:
[ [101, 102, 103], [201, 202, 203], [301, 302, 303], [401, 402, 403] ]
似乎工作正常。
您也可以简单地使用import UIKit
class RestaurantDetailViewController: UIViewController {
@IBOutlet var restaurantImageView: UIImageView!
var restaurantImage = ""
override func viewDidLoad () {
super.viewDidLoad ()
restaurantImageView.image = UIImage(named: restaurantImage)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showRestaurantDetail" {
if let indexPath = tableView.indexPathSelectedRow {
let destinationController = segue.destinationViewController as! RestaurantDetailViewController
destinationController.restaurantImage = restaurantImageView[indexPath.row]
}
}
}
}
。