您的位置:首页 > 移动开发 > Android开发

android的自定义toolbar

2016-07-18 15:49 411 查看
以前的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更加的方便了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息