最近想着做一个记事本一样的app,一是因为感觉平时会有很多灵光一闪的计划,但过后总是容易忘记,二是正好要开始做Java的课程设计,里边有个记事本的题目,直接把它搞成android端的,希望老师不会打我。
要实现的toolbar的效果大概是这样的:
title居中,右侧有一个选择日期的button,
Toolbar做为ActionBar的替代品,确实有很大的优势,主要在于toolbar本身是一个ViewGroup可以来使用,当我们需要添加其他view,可以直接作为子view放到toolbar中。
例如:toolbar默认的title是靠左,右侧是一个setting的dropmenu,我们要替换,
首先在布局文件中:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay">
<TextView
android:id="@+id/datetitle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:text="今天"
android:textStyle="bold"
android:textSize="22dp"/>
<ImageView
android:id="@+id/datebtn"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="right"
android:layout_marginRight="10dp"
android:src="@drawable/date"/>
</android.support.v7.widget.Toolbar>
通过layout_gravity来控制子view的位置,
然后还需要做的就是在activity中:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("");
setSupportActionBar(toolbar);
并且在onCreateOptionMenu中把menu加载布局文件注释掉:
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
//getMenuInflater().inflate(R.menu.main, menu);
return false;
}
这样就可以达到这样的效果了。
当然使用Toolbar时不要忘记关闭ActionBar
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>