本次内容主要讲解Android Toolbar的使用及相关注意事项。
Toolbar作为ActionBar的拓展,被用于应用布局中,ActionBar是传统Activity的不透明窗口装饰框架控制的一部分不够灵活,您可能会对它产生厌烦,甚至不如自定义一个类似ActionBar那样的布局来替代它。后来v7带来了Toolbar,Toolbar可以嵌套于各个层次之中,只要你需要它时。要比ActionBar灵活多了,你可以将其布局的底部,中间等等任意位置,无需像actionbar那样固定于顶部。或许你会喜欢上Toolbar。一个应用可以选择设计一个Toolbar作为Activity的a、ActionBar使用,通过setSupportActionBar()方法。
Toolbar比起ActionBar支持更多的特性。从开始到结束,ToolBar可以包含下列可选元素的组合:
**- 一个导航按钮;
一个Logo图标:你可以延长其任意的高和宽;
一个标题和子标题;
一个或更多自定义的views:你可以向Toobar添加任意子视图,并展现于此布局中。如果一个子视图设置了在Toobar的Gravity为CENTER_HORIZONTAL,则所有其他元素被测量后,该视图将尝试显示在工具栏中的可用空间中的中心;
一个活动菜单:可以设置为溢出式的。**
接下来我们来看看Toolbar的使用:
我们新建一个应用,在主布局中添加如下布局代码:
<android.support.v7.widget.Toolbar
android:id="@+id/main_actionbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="50dp"
android:background="@color/colorAccent"/>
背景设置的是粉红色。
需要注意的是,你需要确保项目中右android.support.v7的jar包。
然后在代码中如下设置:
Toolbar toolbar = (Toolbar) findViewById(R.id.main_actionbar);
toolbar.setLogo(R.mipmap.ic_launcher);
setSupportActionBar(toolbar);
还需一步重要的布局,就是将原始的ActionBar移除掉:
可以在Manifests中设置
android:theme=”@style/Theme.AppCompat.Light.NoActionBar”
好了,这样就是Toolbar的简单使用,看看效果:
看到在布局中设置的paddingTop=“50dp”起作用了。Toolbar被拉伸了,同样你可以任意的设置其他方向的拉伸。
添加一个导航按钮
需添加如下代码,即可实现。
toolbar.setNavigationIcon(R.drawable.back);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//你要做的事
}
});
看看效果:
添加一个菜单:
toolbar.setOnCreateContextMenuListener(this);
并且重新菜单的方法
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
其中menu可自行编写,不再赘述。
看看效果
可是你有没发现,这弹出的菜单把导航栏遮住了,也不美观。那么如何让它显示在下面呢,我们继续。。。
将Manifasts中的主题改为
android:theme="@style/AppTheme"
并且修改style中原有的属性:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<!--window背景颜色 设置蓝色-->
<item name="android:windowBackground">@color/colorPrimary</item>
<!--设置菜单的样式-->
<item name="actionOverflowMenuStyle">@style/menuStyle</item>
</style>
<!--设置为溢出式的-->
<style name="menuStyle" parent="@style/Widget.AppCompat.Light.PopupMenu.Overflow">
<item name="overlapAnchor">false</item>
</style>
好了,再来运行一下,奇迹出现了
发现,这变化好大有没有。菜单溢出显示了。
归功于parent=”@style/Widget.AppCompat.Light.PopupMenu.Overflow”的设置;
最顶部的颜色也变成了蓝色且背景主色也变成了蓝色,这主要归功于name=”android:windowBackground”;
好了,就到这里,欢迎围观。。。