Toolbar的使用
来源:互联网 发布:js替换所有字符串 编辑:程序博客网 时间:2024/06/05 17:39
前言
在Android Studio中默认工程继承AppCompatActivity而不是Activity。
从AppCompatActivity的源码中可以看到,它是继承自FragmentActivity的而它的另一个作用是代替了过时的ActionBarActivity,即用Toolbar代替ActionBar。接下来就介绍一下Toolbar的使用。
导入依赖包
compile ‘com.android.support:appcompat-v7:24.1.1’
xml中设置
<android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/tool" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:minHeight="?attr/actionBarSize" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/></android.support.design.widget.AppBarLayout>
在Activity中设置Toolbar
基本设置
1.设置标题
setTitle("title");setSupportActionBar(toolbar);
默认标题是靠右对齐,如果要居中或对标题样式有特殊需求可以在xml中的Toolbar标签中加入并配置其属性
2.设置返回按钮
tool.setNavigationIcon(R.mipmap.back); tool.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(getWindow().getDecorView(),"back",Snackbar.LENGTH_SHORT).show(); } });
3.设置logo
tool.setLogo(R.mipmap.logo);
4.设置副标题
tool.setSubtitle("subtitle");
设置完以上参数的样式如下
menu设置
1.menu基本设置
在代码中设置获取menu
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.food_type_menu,menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { //各个item点击事件 return true; }
在menu中设置menu样式
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/menu_group" android:title="item1" android:icon="@mipmap/ic_launcher" app:showAsAction="always" /> <item android:id="@+id/menu_clear" android:title="item1" app:showAsAction="never" /> <item android:id="@+id/menu_refresh" android:title="item2" app:showAsAction="never" /></menu>
其中showAsAction属性共有五个值:ifRoom、never、always、withText、collapseActionView,可以混合使用。
ifRoom 会显示在Item中,但是如果已经有4个或者4个以上的Item时会隐藏在溢出列表中。当然个数并不仅仅局限于4个,依据屏幕的宽窄而定
never 永远不会显示。只会在溢出列表中显示,而且只显示标题,所以在定义item的时候,最好把标题都带上。
always 无论是否溢出,总会显示。
withText withText值示意Action bar要显示文本标题。Action bar会尽可能的显示这个标题,但是,如果图标有效并且受到Action bar空间的限制,文本标题有可能显示不全。
collapseActionView 声明了这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。否则,这个操作视窗在默认的情况下是可见的,并且即便在用于不适用的时候,也要占据操作栏的有效空间。
一般要配合ifRoom一起使用才会有效果。
最终效果
2.menu样式
默认的样式是白底黑字,可以通过设置Toolbar中的theme来改变样式
<!--<style name="MenuStyle" parent="@style/ThemeOverlay.AppCompat.Light">--><style name="MenuStyle" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <item name="android:textColorPrimary">#ffffff</item></style>
以上两个parent,ThemeOverlay.AppCompat.Light为白色背景ThemeOverlay.AppCompat.Dark.ActionBar为黑色背景,android:textColorPrimary设置字体颜色
3.PopupMenu
PopupMenu是一个轻量话的控件,与PopupWindow相比少了很多自定义的属性,这里我将PopupWindow作为一个Menu的展开来使用
PopupMenu popup=new PopupMenu(this,findViewById(R.id.menu_group));popup.getMenuInflater().inflate(R.menu.food_type_menu_item,popup.getMenu());popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()){ case R.id.item1: ToastUtil.showToast(FoodTypeActivity.this,"item1"); break; case R.id.item2: ToastUtil.showToast(FoodTypeActivity.this,"item2"); break; } return true; }});popup.show();
如果需要改变PopupMenu的字体颜色和背景颜色就需要在该window对应的Activity中改变它的style
<style name="PpupmenuStyle" parent="@style/AppTheme"> <item name="android:textColorPrimary">#ffffff</item> <item name="android:colorBackground">#000000</item></style>
在AndroidManifest中设置style
<activity android:name=".view.FoodTypeActivity" android:theme="@style/PpupmenuStyle"/>
默认PopupMenu是只显示title不显示icon的,可以自己重写PopupMenu并修改相关属性来使之显示icon
try { Field field = popup.getClass().getDeclaredField("mPopup"); field.setAccessible(true); MenuPopupHelper mHelper = (MenuPopupHelper) field.get(popup); mHelper.setForceShowIcon(true);} catch (Exception e) { e.printStackTrace();}
结尾
以上就是关于Toolbar的一些东西,虽然常用的都是自定义的title,但还是有必要了解一下官方给的方案。
- ToolBar控件的使用
- Toolbar的高级使用
- Android --Toolbar的使用
- ToolBar的使用
- android toolbar的使用
- ToolBar的使用
- toolbar的使用
- ToolBar的基本使用
- ToolBar的使用
- toolbar的使用
- ToolBar的简单使用
- ToolBar的使用
- Toolbar的使用.md
- ToolBar的使用
- Toolbar的使用总结
- ToolBar的基本使用
- Toolbar的使用详解
- ToolBar的使用
- iOS UITableview cell 顶部空白区的去除
- Java设计模式:命令模式(Command)
- WPF UNITY双向通信
- c++中的虚函数
- [李景山php]算法系列|php 实现 冒泡排序!
- Toolbar的使用
- C# 简单接口及接口属性定义!!
- cocoapods 安装 常见问题及其解决方案汇总
- WIFI/蓝牙/NFC/传感器
- PhotoView图片的放大和缩小的用法
- 111111111111111111111111
- Spring Security学习二 - 自定义Login方法
- 简单工厂模式——2016手机也疯狂
- 二级C语言复习7