android的自定义toolbar

以前的actionbar已经不再流行使用,现在的toolbar,可以更加人性化的满足需求,简单的叙述一下吧。

既然我们要使用toolbar。那么我在先在styles.xml中,将AppTheme修改成noActionbar,修改我们应用的主题,使用toolbar主题。

<!-- 修改应用的主题,NoActionBar主题,使用toolbar-->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

然后自定义我们的toolbar.xml,也就是我们的自定义的toolbar的布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar 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="?attr/colorPrimary"
    android:minHeight="?attr/actionBarSize">

    <ImageView
        android:id="@+id/home_btn"
        android:layout_width="37dp"
        android:layout_height="37dp"
        android:layout_gravity="left"
        android:layout_marginLeft="10dp"
        android:background="@mipmap/home_btn" />

    <TextView
        android:id="@+id/toolbar_num"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left"
        android:layout_marginLeft="10dp"
        android:text="num"
        android:textColor="#fff"
        android:textSize="16dp"
        android:visibility="gone" />

    <TextView
        android:id="@+id/toolbar_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_gravity="center"
        android:text="@string/forget_pwd"
        android:textColor="@android:color/white"
        android:textSize="18sp" />


    <TextView
        android:id="@+id/toolbar_edit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:layout_marginRight="10dp"
        android:text="帮助"
        android:textColor="#fff"
        android:textSize="16sp" />

</android.support.v7.widget.Toolbar>

这样,可以看到我们实现后的xml的布局效果如下图所示:

   

这只是将我们的toolbar给封装好了,然后我们以后用到的toolbar,在不同的界面是显示不同的toolbar的,所以,上面的toolbar.xml可以说是我们的一个toolbar的模板。然后我们如果有需要toolbar的界面,只需要将这个已经封装好的toolbar.xml这个布局,include进去就OK啦。废话不多说,具体的引用界面的xml部分如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:orientation="vertical">

    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar" />
</LinearLayout>

首先我们在用到toolbar的界面是先include我们自定义的toolbar,如果还有别的控件,你在include的下面可以继续添加。这里不做多余的解释了。

布局结束后,我们就要对我们这个界面用到的toolbar,用代码的方式,进行修改,然后让不同的界面,显示不同的toolbar,但是用到是同一个模板。

具体的修改代码如下:

首先,将我们要修改的两个部分声明。

private TextView tool_title, tool_edit;

声明以后,如果要对这俩textview进行修改,就需要获取资源,然后对其进行修改,那么获取资源的方法就如下:

View view = (View) findViewById(R.id.toolbar);
首先,获取到toolbar的资源,这个id就是我们include这个toolbar的id。

然后,还需要获取到toolbar下面的组件,也就是include下的两个textview。获取方法如下:

tool_edit = (TextView) view.findViewById(R.id.toolbar_edit);
tool_title = (TextView) view.findViewById(R.id.toolbar_title);
对其进行修改:

tool_title.setText("重置密码");
tool_edit.setVisibility(View.GONE);
还可以设置点击事件,既然获取到资源了,那么点击事件的监听什么的也就很简单了。

修改后自己可以运行看一下我们实现后的效果。是不是比以前的actionbar更加的方便了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值