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
原创粉丝点击