我尝试在支持工具栏中使用定义自定义图标,但显示的唯一图标是左箭头...我尝试在布局中以编程方式设置它但结果是相同的。
这是我的活动
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar);
toolbar.setNavigationIcon(R.drawable.ic_launcher);
toolbar.setTitle("");
setSupportActionBar(toolbar);
}
我的工具栏布局
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/my_toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
app:navigationIcon="@drawable/ic_action_bar"
android:minHeight="@dimen/action_bar_size"
android:background="?attr/colorPrimary"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
/>
答案 0 :(得分:21)
我自己尝试过,问题似乎是你必须在setNavigationIcon
之后致电setSupportActionBar(toolbar)
。否则它只会显示你所描述的箭头
因此,要解决此问题,只需更改以下代码:
//...
Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.drawable.ic_launcher);
toolbar.setTitle("");
注意:设置标题,内容描述等同样如此。我不知道这是一个错误还是有意,但它确实有点奇怪。
答案 1 :(得分:0)
如果您想更改菜单图标。 (也许有人需要它)
在您的活动中
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_info, menu);
return true;
}
(menu_info.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_info_action"
android:icon="@drawable/ic_info_icon"
android:title="@string/information"
app:showAsAction="ifRoom"/>
</menu>
答案 2 :(得分:0)
当前最有效的方法:
首先正确显示左侧图标,在onCreateView或onCreate中调用此函数:
protected void enableDisplayHomeAsHome(boolean active) {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(active); // switch on the left hand icon
actionBar.setHomeAsUpIndicator(R.drawable.ic_action_home); // replace with your custom icon
}
}
现在您可以在活动中拦截此按钮的按下:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home: { //index returned when home button pressed
homeButtonPressed();
return true;
}
}
return super.onOptionsItemSelected(item);
}
答案 3 :(得分:-1)
ActionBar.setHomeAsUpIndicator(...);
这个适合我。