Toolbar的简单使用和封装
因为Actionbar的扩展性比较弱,所以一般都是自定义一个titlebar,但是现在有了toolbar,完全可以解决任何头布局的显示。
简单封装后的效果是这样的:
代码:
public class MyToolbar {private Toolbar mToolbar;private AppCompatActivity mActivity;private ActionBar mActionBar;private RelativeLayout rlCustom;public MyToolbar(Toolbar mToolbar, final AppCompatActivity mActivity) {this.mToolbar = mToolbar;this.mActivity = mActivity;rlCustom = (RelativeLayout) mToolbar.findViewById(R.id.rlCustom);//支持ActionBar mActivity.setSupportActionBar(mToolbar);mActionBar = mActivity.getSupportActionBar();mActionBar.setDisplayHomeAsUpEnabled(true);mToolbar.setNavigationOnClickListener(new View.OnClickListener() {@Override public void onClick(View v) {mActivity.finish();}});}//设置主标题 public MyToolbar setTitle(String title) {mActionBar.setTitle(title);return MyToolbar.this;}//设置副标题 public MyToolbar setSubTitle(String subTitle) {mActionBar.setSubtitle(subTitle);return MyToolbar.this;}public MyToolbar setTitle(int resId) {mActionBar.setTitle(resId);return MyToolbar.this;}public MyToolbar setSubTitle(int resId) {mActionBar.setSubtitle(resId);return MyToolbar.this;}//设置导航栏图标的点击监听 public MyToolbar setNavigationOnClickListener(View.OnClickListener listener) {mToolbar.setOnClickListener(listener);return MyToolbar.this;}//设置用于工具栏导航按钮的图标 public MyToolbar setNavigationIcon(int resId) {mToolbar.setNavigationIcon(resId);return MyToolbar.this;}// 给左上角图标的左边加上一个返回的图标 public MyToolbar setDisplayHomeAsUpEnabled(boolean isShow) {mActionBar.setDisplayHomeAsUpEnabled(isShow);return MyToolbar.this;}//自定义toolbar的布局 public MyToolbar setCustomView(View view) {rlCustom.removeAllViews();rlCustom.addView(view);return MyToolbar.this;}//自定义toolbar的布局 public MyToolbar setCustomView(int resId) {View view = mActivity.getLayoutInflater().inflate(resId, null);rlCustom.removeAllViews();rlCustom.addView(view);return MyToolbar.this;} }
BaseActivity
public abstract class BaseActivity extends AppCompatActivity {private RelativeLayout rlContent;private Toolbar toolBar;private MyToolbar mMyToolbar;@Override public void startActivity(Intent intent) {super.startActivity(intent);overridePendingTransition(R.anim.anim_in_right_left, R.anim.anim_out_right_left);}@Override public void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_base_layout);initView();View view = getLayoutInflater().inflate(getLayoutId(), null, false);rlContent.addView(view);mMyToolbar = new MyToolbar(toolBar, this);}private void initView() {rlContent = (RelativeLayout) findViewById(R.id.rlContent);toolBar = (Toolbar) findViewById(R.id.toolBar);}public abstract int getLayoutId();public MyToolbar getToolbar() {if (null == mMyToolbar) {mMyToolbar = new MyToolbar(toolBar, this);}return mMyToolbar;}@Override public void finish() {super.finish();overridePendingTransition(R.anim.anim_in_left_right, R.anim.anim_out_left_right);} }
MainAncitity
public class MainActivity extends BaseActivity {private MyToolbar mMyToolbar;@Override public void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);mMyToolbar = getToolbar();mMyToolbar.setTitle("主标题").setSubTitle("副标题");}@Override public int getLayoutId() {return R.layout.activity_main;}@Override public boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.menu_main, menu);return true;}@Override public boolean onOptionsItemSelected(MenuItem item) {return super.onOptionsItemSelected(item);}public void first(View view) {startActivity(new Intent(this, SecondActivity.class));} }
SecondActivity
public class SecondActivity extends BaseActivity {private MyToolbar mMyToolbar;@Override public void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);mMyToolbar = getToolbar();mMyToolbar.setCustomView(R.layout.layout_custom_toolbar);}@Override public int getLayoutId() {return R.layout.activity_second;} }
BaseActivity布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.Toolbar android:id="@+id/toolBar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/colorPrimary" > <RelativeLayout android:id="@+id/rlCustom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" > </RelativeLayout> </android.support.v7.widget.Toolbar> <RelativeLayout android:id="@+id/rlContent" android:layout_width="match_parent" android:layout_height="match_parent"> </RelativeLayout> </LinearLayout>
menu布局:
<?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/action_search" android:title="搜索" android:orderInCategory="80" android:icon="@android:drawable/ic_menu_search" app:showAsAction="ifRoom" /> <item android:id="@+id/action_share" android:title="分享" android:orderInCategory="90" android:icon="@android:drawable/ic_menu_share" app:showAsAction="ifRoom" /> <item android:id="@+id/action_settings" android:title="设置" android:orderInCategory="100" app:showAsAction="never"/> </menu>
anim_in_right_left:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="300"> <translate android:fromXDelta="100%p" android:toXDelta="0"/> </set>
anim_out_right_left:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="300"> <translate android:fromXDelta="0" android:toXDelta="-100%p"/> </set>
anim_in_left_right:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="300"> <translate android:fromXDelta="-100%p" android:toXDelta="0"/> </set>
anim_out_left_right:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="300"> <translate android:fromXDelta="0" android:toXDelta="100%p"/> </set>
Toolbar的简单使用和封装相关推荐
- 简单介绍 ghost封装过程
简单介绍 ghost封装过程 图片: 描述:1 图片: 描述:2 图片: 描述:3 图片: 描述:4 图片: 描述:5 图片: 描述:8 图片: 描述:11 图片: 描述:12 图片: 描述:13 图 ...
- [C#] 简单的 Helper 封装 -- RegularExpressionHelper
简单的 Helper 封装 -- RegularExpressionHelper 1 #region 2 3 using System.Text.RegularExpressions; 4 5 #en ...
- 非常不错的地区三级联动,js简单易懂。封装起来了(转)
非常不错的地区三级联动,js简单易懂.封装起来了 首先需要引入area.js,然后配置并初始化插件: 例: <!-- 绑定银行卡开始 --><script src="js/ ...
- AD进阶操作,利用AD17自带的3Dbody绘制简单的PCB3D封装
年后开工,在维护公司的PCB封装时,在网上找到了比较全面的3D封装,于是乎添加到库文件,却发现有一些电子元件的3D封装是没有的,经过一番度娘的查找,学习了怎么利用AD自带的3D功能绘制3D封装. 首先 ...
- Flutter - dio 简单二次封装
demo 地址: https://github.com/iotjin/jh_flutter_demo Flutter Dio简单二次封装和自定义Header Flutter Dio二次封装 Flutt ...
- Toolbar的简单使用
Toolbar的简单使用 前言:由于之前项目都没怎么使用toobar,今天心血来潮就写了个demo熟悉下,免得以后用到还得花时候查资料,顺便做下笔记!go... 一.简介 Toobar是5.0之后出来 ...
- dio设置自定义post请求_Flutter Dio简单二次封装和自定义Header
话不多说自己看代码封装的比较简单,比较适合入门学习Dio. import 'package:dio/dio.dart'; import 'Api.dart'; /* * 封装 restful 请求 * ...
- js原生设计模式——3简单工厂模式\简单工厂模式封装简单对象
1.Factory基本写法 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- 仿照jQuery进行一些简单的框架封装(欢迎指教~)
1 (function(window,undefined){ 2 var arr = [], 3 push = arr.push, 4 slice = arr.slice; 5 //首先要做的就是封装 ...
最新文章
- 隆重介绍!一款新型基于姿势的人像实例分割框架
- 如何修改markdown中图片的大小
- 关于AIX lv 4k offset问题初步了解
- SVN Switch
- 关 于 解 析 php 的 问 题
- Exception in thread “main“ java.io.FileNotFoundException: C:\Temp (拒绝访问。)
- VS各种工程文件说明
- linux 16.04 WIFI,手动配置 WIFI无线网络 (Ubuntu 16.04)
- 【ML经典书籍系列1】解读PRML
- java servlet面试题_JavaWeb之JSP和servlet面试题附答案
- python 四象限图_「四象限图」excel制作四象限图的方法图解步骤 - seo实验室
- 五大常用算法——动态规划算法详解及经典例题
- 硬件堡垒机、软件堡垒机、云堡垒机品牌怎么选?
- 【前端】JS----JSX知识
- 《装甲战》的主要原则
- html5病毒营销,病毒式营销的特点及成功案例
- 【报告分享】2020社交电商行业发展报告之消费者行为研究报告(附下载)
- LB集群--LVS部署
- 华为服务器安装esxi找不到硬盘,Vmware Esxi 6.7设置阵列卡直通后找不到存储踩坑总结...
- 分子偶极矩大小如何判断_分子极性大小比较方法?
热门文章
- Exp5 MSF基础应用 ——20164316张子遥
- 服务器端配置nodejs环境(使用pm2进程管理运行)
- tomcat 开启 https 使用apr
- 结对作业_core组
- I/O多路复用之select,poll,epoll简介
- 【转】打开,另存为,属性等14个javascript代码
- 在GitHub上删除项目后,在Android Studio上传项目依然提示project is already on github
- 调整Virtual Box硬盘大小
- 学习SpringBoot(1)入门及简单的配置
- 微软正式发布PowerShell Core 6.0