android的自定义toolbar

来源:互联网 发布:淘宝扣分12分会怎么样 编辑:程序博客网 时间:2024/04/30 09:39

以前的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更加的方便了。


0 0
原创粉丝点击