您的位置:首页 > 其它

ToolBar左侧图标设置以及点击事件配置

2016-05-05 23:28 543 查看
Material Design包下的ToolBar已经在逐步取代以前ActionBar的地位了,相比较之下,ToolBar更加显得灵活,已经不局限于一个简单的标题栏。

更像是一个自由的控件。

如何给ToolBar设置左侧图标。

ToolBar左侧的图标其实很讲究的,之前在不了解情况前,我使用了一种比较蠢得方法,就是在ToolBar内放置了一个gravity为left的ImageView。

上面那种方法太蠢了,不过也算一种方法,还有一种是两个属性。app:logo和app:navigationIcon。

请注意,这里的app就是自定义命名空间了。其中设置logo属性后的监听事件不清楚怎么做,之前试了onOptionsItemSelected()方法,也没有作用。

设置app:navigationIcon,后的点击事件很简单。也有两种方法,如下:

- 第一种,Activity内重写onOptionsItemSelected(MenuItem item)方法,可见这个导航图标的默认id就是android.R.id.home

@Override
public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {
case android.R.id.home:
。。。逻辑代码
}
return super.onOptionsItemSelected(item);
}*/


第二种,就是直接设置toolbar.setNavigationOnClickListener(View.onCickListener),这里的点击事件你没有看错,没什么特殊的,就是View的onClick事件。我们可以看看toolbar的源码:

private ImageButton mNavButtonView;
/**
* Set the icon to use for the toolbar's navigation button.
*
* <p>The navigation button appears at the start of the toolbar if present. Setting an icon
* will make the navigation button visible.</p>
*
* <p>If you use a navigation icon you should also set a description for its action using
* {@link #setNavigationContentDescription(int)}. This is used for accessibility and
* tooltips.</p>
*
* @param icon Drawable to set, may be null to clear the icon
*/
public void setNavigationIcon(@Nullable Drawable icon) {
if (icon != null) {
ensureNavButtonView();
if (!isChildOrHidden(mNavButtonView)) {
addSystemView(mNavButtonView, true);
}
} else if (mNavButtonView != null && isChildOrHidden(mNavButtonView)) {
removeView(mNavButtonView);
mHiddenViews.remove(mNavButtonView);
}
if (mNavButtonView != null) {
mNavButtonView.setImageDrawable(icon);
}
}

/**
* Return the current drawable used as the navigation icon.
*
* @return The navigation icon drawable
*/
@Nullable
public Drawable getNavigationIcon() {
return mNavButtonView != null ? mNavButtonView.getDrawable() : null;
}

/**
* Set a listener to respond to navigation events.
*
* <p>This listener will be called whenever the user clicks the navigation button
* at the start of the toolbar. An icon must be set for the navigation button to appear.</p>
*
* @param listener Listener to set
* @see #setNavigationIcon(android.graphics.drawable.Drawable)
*/
public void setNavigationOnClickListener(OnClickListener listener) {
ensureNavButtonView();
mNavButtonView.setOnClickListener(listener);
}


可见这里的导航图标就是ToolBar内部自己定义的ImageButton了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: