toolbar. setXXX();
getMainActivity().setSupportActionBar(toolbar);
会抹掉toolbar之前设置的navigation的点击事件 以及setnavigationicon, setoverflow等方法
要小心 这些方法 必须在前面写 ,最好只写一次
格式应该为toolbar. setXXX();
Toolbar一些比较常用的办法:
修改导航图标:
toolbar.setNavigationIcon(资源文件);
修改menu图标:
toolbar.setOverflowIcon(getResources().getDrawable(R.drawable.ic_toolbar_more));
设置导航事件
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getActivity().onBackPressed();
}
});
设置菜单事件
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
}
修改toolbar名字
setSupportActionBar(toolbar); (这个代码必须写在点击事件之前 )
getSupportActionBar().setTitle(null);
//noinspection ConstantConditions
toolbar.setTitle(com.music.gramophone.R.string.action_tag_editor);
为Toolbar设置字体 ,可以先获取Textview, 在对改textview设置字体或者其他特效
public static TextView getToolbarTitleView(AppCompatActivity activity, Toolbar toolbar) {
ActionBar actionBar = activity.getSupportActionBar();
CharSequence actionbarTitle = null;
if (actionBar != null)
actionbarTitle = actionBar.getTitle();
actionbarTitle = TextUtils.isEmpty(actionbarTitle) ? toolbar.getTitle() : actionbarTitle;
if (TextUtils.isEmpty(actionbarTitle)) return null;
// can't find if title not set
for (int i = 0; i < toolbar.getChildCount(); i++) {
View v = toolbar.getChildAt(i);
if (v != null && v instanceof TextView) {
TextView t = (TextView) v;
CharSequence title = t.getText();
if (!TextUtils.isEmpty(title) && actionbarTitle.equals(title) && t.getId() == View.NO_ID) {
//Toolbar does not assign id to views with layout params SYSTEM, hence getId() == View.NO_ID
//in same manner subtitle TextView can be obtained.
return t;
}
}
}
return null;
}
影响Toolbar外观和样式的几个因素
1 大小: 如果不可见 先设置高度为wrap_content
2 自定义样式
3 xml或者java代码
4 系统样式 这个也是最隐秘最难发现的地方 以下样式会对toolbar本身起作用
<!--<stylename="Base.Widget.AppCompat.Toolbar"parent="android:Widget">
<itemname="titleTextAppearance">@style/TextAppearance.Widget.AppCompat.Toolbar.Title</item>
<itemname="subtitleTextAppearance">
@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle
</item>
<itemname="android:minHeight">?attr/actionBarSize</item>
<itemna
<!-- <style name="Base.Widget.AppCompat.Toolbar" parent="android:Widget">
<item name="titleTextAppearance">@style/TextAppearance.Widget.AppCompat.Toolbar.Title</item>
<item name="subtitleTextAppearance">
@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle
</item>
<item name="android:minHeight">?attr/actionBarSize</item>
<item name="titleMargin">40dp</item>
<item name="maxButtonHeight">56dp</item>
<item name="buttonGravity">top</item>
<item name="collapseIcon">?attr/homeAsUpIndicator</item>
<item name="collapseContentDescription">@string/abc_toolbar_collapse_description</item>
<item name="contentInsetStart">16dp</item>
<item name="contentInsetStartWithNavigation">72dp</item>
<item name="android:paddingLeft">0dp</item>
<item name="android:paddingRight">0dp</item>
</style>-->
me="titleMargin">40dp</item>
<itemname="maxButtonHeight">56dp</item>
<itemname="buttonGravity">top</item>
<itemname="collapseIcon">?attr/homeAsUpIndicator</item>
<itemname="collapseContentDescription">@string/abc_toolbar_collapse_description</item>
<itemname="contentInsetStart">16dp</item>
<itemname="contentInsetStartWithNavigation">72dp</item>
<itemname="android:paddingLeft">0dp</item>
<itemname="android:paddingRight">0dp</item>
</style>-->
会对系统的Toolbar 控件产生影响
在toolbar 的使用过程中发现如果其他控件挡住了他点击事件不会生效, 所以建议toolbar放在最顶层.(写在最下方) 因为toolbar一般都在最顶层. ,除了少数需要全屏后返回toolbar的特效
http://www.jianshu.com/p/6244687137d2