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