Android Material Design Android官方控件学习
Material Design 原生控件
Material Design 是API21 Android 5.0引进的设计风格,同时也提供了一些MD风格的控件,这里就是要介绍这些控件.
Toolbar
- titlebar 古老的Android版本
- actionbar Android 3.0引进 替代titlebar
API11 app.Acitivity及其子类 getActionBar()得到actionbar
API7 support.v7.app.AppCompatActivity及其子类 - toolbar Android 5.0引进 替代actionbar
API7 android.support.v7.widget.Toolbar - 标题栏—>功能栏—>工具栏
- 总之,用toolbar就对了
####导入support-v7库
'com.android.support:support-v7:26.1.0'
简单用法
在acitivity的布局顶部添加android.support.v7.widget.Toolbar
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:fitsSystemWindows="true"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
>
<TextView
android:id="@+id/toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/app_name"
android:textColor="#FFFFFF"
android:textSize="20sp"
/>
</android.support.v7.widget.Toolbar>
####activity
/**
* 设置toolbar
*/
private void setupToolbar() {
mToolbar = (Toolbar) findViewById(R.id.toolbar);
mToolbar.setTitle("回访记录");
mToolbar.setSubtitle("SubTitle");
mToolbar.setLogo(R.mipmap.ic_launcher);
mToolbar.setNavigationIcon(R.drawable.ic_action_back);
//setSupportActionBar之前
setSupportActionBar(mToolbar);
}
/**
* 设置menu
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// getMenuInflater().inflate(R.menu.menu_base_list, menu);
return true;
}
/**
* 设置menu点击事件
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
break;
}
return true;
}
报错 theme
java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead
activity的theme
使用 Theme.AppCompat.NoActionBar等无标题栏的theme;
或者theme 中添加
<item name="android:windowNoTitle">true</item>//无标题
<item name="android:windowActionBar">false</item>//无ActionBar
源码地址:https://github.com/LinweiJ/MaterialDesignWidget