嘉兴网嘉兴网站建设,网页翻译快捷键,建网站优势,做房地产用什么网站好现在项目中一般都会使用标题栏#xff0c;谷歌在2014年推出了新的app bar---ToolBar#xff0c;代替了以前使用的ActionBar。在做项目中会经常用到这个ToolBar#xff0c;虽然用的很多#xff0c;但是自己对它如何用还不是很明白#xff0c;今天就来简单的学习下这个控件的…现在项目中一般都会使用标题栏谷歌在2014年推出了新的app bar---ToolBar代替了以前使用的ActionBar。在做项目中会经常用到这个ToolBar虽然用的很多但是自己对它如何用还不是很明白今天就来简单的学习下这个控件的使用。效果图效果图1. 修改app的style我们如果要使用ToolBar需要先把原来的ActionBar隐藏起来就先要设置App的主题为Theme.AppCompat.Light.NoActionBar这种主题就需要在values/style.xml里面修改Apptheme的Parent或者parent的parent为Theme.AppCompat.Light.NoActionBar这样的话才能使用ToolBar得到我们想要的效果。2. 在布局中使用ToolBar达到效果图1.标题首先在布局文件activity_main.xml中android:idid/toolbarandroid:layout_widthmatch_parentandroid:layout_height48dpandroid:background#ffffffandroid:gravitycenterapp:titleTextColor#1d1d1dandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_gravitycenterandroid:text工作android:textColor#1d1d1dandroid:textSize16sp /需要说明的是ToolBar其实也是一个ViewGroup他的布局和LinearLayout类似所以在使用的过程中可以使用android:layout_gravitycenter来让TextView居中显示这个时候的标题栏是这样的标题栏-无返回箭头-无右侧按钮2. 右侧按钮标题栏已经居中显示了但是我们可能还需要在右侧需要一个按钮来进行一定的操作比如下面的按钮操作标题栏-无返回箭头这个怎么实现呢看下面的代码第一种实现android:idid/toolbarandroid:layout_widthmatch_parentandroid:layout_height48dpandroid:background#ffffffandroid:gravitycenterapp:titleTextColor#1d1d1dandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_centerInParenttrueandroid:layout_gravitycenterandroid:text工作android:textColor#1d1d1dandroid:textSize16sp /android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_centerInParenttrueandroid:layout_alignParentRighttrueandroid:layout_marginRight12dpandroid:text按钮android:textColor#1d1d1dandroid:textSize14sp /这里在ToolBar的自定义区放入了一个RelativeLayout在RelativeLayout里面放置了一个标题和右侧的按钮右侧的按钮是可以随意定制的第二种实现我们可以利用菜单选项menu来实现这种效果首先在res目录下新建menu文件夹在该文件夹下面建立menu.main.xml代码如下xmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolstools:context.MainActivityandroid:idid/action_shareandroid:orderInCategory90android:title按钮app:showAsActionifRoom /在MainActivity.java中重写onCreateOptionsMenu方法如下所示Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.menu_main, menu);return true;}3. 左侧的返回箭头首先你得先准备一个返回箭头的图标然后以下两种都行都可以实现显示小箭头并且点击小箭头返回第一种方案//设置小箭头toolbar.setNavigationIcon(R.drawable.common_back_ic);//设置小箭头点击事件toolbar.setNavigationOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {finish();}});这种方案是只能在当前的Activity中使用达不到复用的目的。第二种方案在日常的开发中通常我们会写一个基类让所有的Activity都继承于这个基类便于统一管理和减少代码量。所以我们可以在改基类(比如BaseActivity.java)中写入以下方法/*** 设置左上角back按钮*/public void setBackArrow() {final Drawable upArrow getResources().getDrawable(R.drawable.common_back_ic);//给ToolBar设置左侧的图标getSupportActionBar().setHomeAsUpIndicator(upArrow);// 给左上角图标的左边加上一个返回的图标 。对应ActionBar.DISPLAY_HOME_AS_UPgetSupportActionBar().setDisplayHomeAsUpEnabled(true);//设置actionBar的标题是否显示对应ActionBar.DISPLAY_SHOW_TITLE。getSupportActionBar().setDisplayShowTitleEnabled(false);}/*** 点击左上角的返回按钮结束本Activity* home就是左上角的小箭头在toolbar上** param item* return*/Overridepublic boolean onOptionsItemSelected(MenuItem item) {if (item.getItemId() android.R.id.home) {basefinish();return true;}return super.onOptionsItemSelected(item);}/*** 抽象方法用于结束activity*/public abstract void basefinish();Overridepublic void onBackPressed() {basefinish();}这样的话我们在的其他Activity只要继承于这个BaseActivity就需要实现抽象方法抽象方法会实现返回操作我们每次只用调用 setBackArrow()这个方法就可以很方便的实现返回小箭头的功能了。简直不能更方便啦到此就实现了ToolBar的基本使用建立了自己的一个标题栏效果和上面是一样的标题栏-最终特此记录