Toolbar的使用和自定义
来源:互联网 发布:ubuntu ufi安装 编辑:程序博客网 时间:2024/04/28 06:28
一、Toolbar的使用
Toolbar一般用作标题栏,要想使用它,我们先把styles.xml做一些改变,让其不使用默认的Actionbar:
运行程序会发现已经没有自带的Actionbar了,然后我们用一个布局来使用Toolbar(toolbar_test.xml):
接下来在主函数的xml中引用进来: <include layout="@layout/toolbar_test"/>
Toolbar还有很多自带的方法,有兴趣可以自己试试,效果如下图:
二、自定义Toolbar
通过上图可以发现,Toolbar自带的title并不是居中的,左右的显示也可能不是我们想要的,由于ToolBar本身就是一个ViewGroup,可以往Toolbar中放入各种组件,那我们就可以自定义它,先上最终效果图:
布局改成如下:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#89c3ef" android:id="@+id/layout" android:gravity="center_horizontal"> <android.support.v7.widget.Toolbar app:contentInsetLeft="0dp" app:contentInsetStart="0dp" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:id="@+id/toolbar"> <!--把高度设置?attr/actionBarSize,和Actionbar的一样高--> <!--contentInsetLeft 和 contentInsetStart 要加上--> <LinearLayout android:id="@+id/left_layout" android:paddingLeft="10dp" android:paddingRight="10dp" android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical" android:layout_gravity="left" android:gravity="center"> <TextView android:id="@+id/left_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:text="" android:textSize="16dp" android:textColor="#00ad64" android:singleLine="true"/> </LinearLayout> <TextView android:id="@+id/title_view" android:layout_margin="2dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:textSize="18dp" android:textColor="@color/write_ffffff" android:text="Title"/> <LinearLayout android:id="@+id/right_layout" android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical" android:layout_gravity="right" android:gravity="center" android:paddingLeft="10dp" android:paddingRight="10dp"> <TextView android:id="@+id/right_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textSize="16dp" android:textColor="#00ad64" android:singleLine="true" android:gravity="center"/> </LinearLayout> </android.support.v7.widget.Toolbar></RelativeLayout>主函数里使用自定义的Toolbar方法:
private void initToolBar(){ mToolbar = (Toolbar)findViewById(R.id.toolbar) ; ToolbarSetting lToolbarSetting = new ToolbarSetting(mToolbar,this); View.OnClickListener leftListener = new View.OnClickListener() { @Override public void onClick(View view) { Log.d("toolbar","left Click"); } }; View.OnClickListener rightListener = new View.OnClickListener() { @Override public void onClick(View view) { Log.d("toolbar","right Click"); } }; lToolbarSetting.setTitle("自定义Toolbar") .isLeftShow(true).setLeftText("back").setLeftClick(leftListener) .isRightShow(true).setRightImage(R.mipmap.apply_for_add).setRightClick(rightListener);}大家一定很好奇,怎么实现.**.**这样的操作,本人比较懒惰,用了一个内部类实现这些方法,有多个地方要用到同一个Toolbar的话需要把这个类变为公用的,现在来看看内部类实现的方法:
public class ToolbarSetting{ Context mContext; TextView title_view; TextView left_view; TextView right_view; LinearLayout left_layout; LinearLayout right_layout; boolean mLeftShow = false; boolean mRightshow = false; /** * 初始化View * @param toolbar * @param context */ ToolbarSetting(Toolbar toolbar,Context context){ if(toolbar != null){ mContext = context; left_layout = (LinearLayout)findViewById(R.id.left_layout); right_layout =(LinearLayout)findViewById(R.id.right_layout); title_view = (TextView)findViewById(R.id.title_view); left_view = (TextView)findViewById(R.id.left_view); right_view = (TextView)findViewById(R.id.right_view); title_view.setText(""); left_view.setText(""); right_view.setText(""); } } /** * 设置标题 * @param title * @return */ public ToolbarSetting setTitle(String title){ if(title!=null){ title_view.setText(title); } return this; } /** * 左边是否显示,默认不显示 * @param leftShow * @return */ public ToolbarSetting isLeftShow(boolean leftShow){ mLeftShow = leftShow; if(leftShow){ left_view.setVisibility(View.VISIBLE); }else { left_view.setVisibility(View.GONE); } return this; } /** * 右边是否显示,默认不显示 * @param rightShow * @return */ public ToolbarSetting isRightShow(boolean rightShow){ mRightshow = rightShow; if(rightShow){ right_view.setVisibility(View.VISIBLE); }else { right_view.setVisibility(View.GONE); } return this; } /** * 设置左边的文字 * @param leftText * @return */ public ToolbarSetting setLeftText(String leftText){ if(leftText != null){ left_view.setText(leftText); } return this; } /** * 设置右边的文字 * @param rightText * @return */ public ToolbarSetting setRightText(String rightText){ if(rightText != null){ right_view.setText(rightText); } return this; } /** * 设置左边的图片 * @param leftImage * @return */ public ToolbarSetting setLeftImage(int leftImage){ if(leftImage != 0){ left_view.setBackgroundResource(leftImage); } return this; } /** * 设置右边的图片 * @param rightImage * @return */ public ToolbarSetting setRightImage(int rightImage){ if(rightImage != 0){ right_view.setBackgroundResource(rightImage); } return this; } /** * 设置左边的监听 * @param leftClick * @return */ public ToolbarSetting setLeftClick(View.OnClickListener leftClick){ if(mLeftShow) left_layout.setOnClickListener(leftClick); return this; } /** * 设置右边的监听 * @param rightClick * @return */ public ToolbarSetting setRightClick(View.OnClickListener rightClick){ if(mRightshow) right_layout.setOnClickListener(rightClick); return this; } }
好了,以上就我最近学习的Toolbar,欢迎大家分享更多的技术。
0 0
- Toolbar的使用和自定义
- Toolbar的使用和自定义Toolbar作为标题栏
- 自定义toolbar和原生toolbar的比较
- 如何使用自定义的Toolbar
- Android开发:Toolbar基本使用和自定义Toolbar
- Toolbar的使用以及自定义Toolbar的方法
- Toolbar的简单介绍和如何简单自定义toolbar
- Toolbar的介绍和使用
- toolbar和popupwindow的使用
- android 自定义Toolbar使用
- 自定义Toolbar以及使用
- 自定义ToolBar的实现
- Toolbar的完全自定义
- Toolbar的完全自定义
- android的自定义toolbar
- 自定义ToolBar的样式
- 自定义view的toolbar
- Ext.Toolbar和Ext.Menu的使用
- Enum 扩展
- android:手机之间蓝牙通信(三)
- 【uGUI】基本布局_Unity3d 开发技术
- Apache Mina(一)
- Java开发岗位面试题归类---怎么好好的准备面试,也算是发展学习方向
- Toolbar的使用和自定义
- Android 内存泄漏总结
- 代码块
- 连通分量的个数-->并查集的使用
- Retrofit+RxJava+OKhttp+RxBus
- 好图看看 官方免费版
- 实现CDH支持Spark SQL功能
- 【企业思考】留给私有云还有多久?时间不多了...
- hdu 2602 Bone Collector (背包入门)