toolbar的使用(突发奇想)
网上toolbar相关介绍已经很多了,这里呢就记录一下一点新的想法。每次新建一个页面总要include一个toolbar进去,其实已经很方便了但写的次数多了还是想偷点懒,于是生出了一个在BaseActivity中手动添加的方法。
大致代码如下:
//Toolbar的布局文件
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="UnusedAttribute"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:fitsSystemWindows="true"
android:minHeight="?attr/actionBarSize"
android:popupTheme="@style/Widget.AppCompat.ActionBar"
app:theme="@style/ToolbarTheme"/>
public class BaseActivity extends AppCompatActivity implements
Toolbar.OnMenuItemClickListener {
private LinearLayout mContentLayout;
private Toolbar mToolbar;
//首先重写布局,改变层级,并重写setContentView方法,将新建的布局放进mContentLayout 中;
private void initContentView() {
ViewGroup content = (ViewGroup) findViewById(android.R.id.content);
content.removeAllViews();
mContentLayout = newLinearLayout(this);
mContentLayout.setOrientation(LinearLayout.VERTICAL);
content.addView(view);
view.addView(mContentLayout);
}
@Override
public void setContentView(int layoutResID) {
LayoutInflater.from(this).inflate(layoutResID, mContentLayout, true);
}
//这是主要方法,需要在setContentView方法前调用。这里传入之前做好的Toolbar布局id,如果有menu则传入
protected void setToolbar(int resId) {
setToolbar(resId, DEFAULT);
}
protected void setToolbar(int resId, int menuId) {
LayoutInflater.from(this).inflate(resId, mContentLayout, true);
mToolbar = (Toolbar) findViewById(R.id.toolbar);
if(menuId != DEFAULT) {
mToolbar.inflateMenu(menuId);
}
setSupportActionBar(mToolbar);
mToolbar.setOnMenuItemClickListener(this);
}
@Override
public booleanonMenuItemClick(MenuItem item) {
return false;
}
}
主要就是BaseActivity中对布局的重写,而对于所有继承了BaseActivity的Activity则可以省去布局中toolbar的添加和少点代码里。不过还有标题设置,自定义布局设置等方法需要完善,我觉得这些就属于个人定制范畴了,因此省去了这部分的代码。PS:第一次用这个文本编辑器,文章结构没调好,只能将就看看了。