设置Theme及定义基本颜色
根据官方设计规范(Color),定义一些用到的颜色:
Toolbars and larger color blocks should use the primary 500 color, which should be the main color of your app. The status bar should be the darker 700 tint of your primary color.
1 |
|
对Lollipop及以下的安卓版本使用不同的styles.xml
1 | <!-- values/styles.xml --> |
1 |
|
使用Toolbar代替ActionBar
- 使用Theme.AppCompat.NoActionBar或者Theme.AppCompat.Light.NoActionBar将系统的ActonBar隐藏
- 定义一个app_bar.xml的布局文件,里面包含一个ToolBar控件
- 使用
在你的layout中添加Toolbar - Activity中使用findViewById实例化Toolbar
- 使用setSupportActionBar()引入实例化的Toolbar
- 自定义app:theme和app:popupTheme,如果有需要的话
- 自定义其他特性,直接使用Toobar的实例或者使用getSupportActionBar()
1 |
|
1 | <!-- activity_main.xml --> |
在onCreate方法中实例化Toolbar对象
1 | Toolbar toolbar; |
看看效果:
使用Navigation Drawer侧滑菜单
- 使用DrawerLayout包含两个子布局,一个是你的内容主布局,一个是侧边布局
- 在代码中初始化DrawerLayout
- 创建一个ActionBarDrawerToggle的实例,并指定Activity、DrawerLayout、Toolbar、Open和Close的字符串值
- 使用ActionBarDrawerToggle的syncState()方法同步汉堡菜单
创建一个空的FragmentNavigationDrawerFragment
作为侧边栏的布局,修改主布局文件,使用DrawerLayout包含两个子布局:
1 | <!-- activity_main.xml --> |
在MainActivity.java中:
1 | protected void onCreate(Bundle savedInstanceState) { |
修改NavigationDrawerFragment.java
1 | package cn.treize.formaterialtest; |
NavigationDrawerFragment的布局文件,这里只是个空的示例:
1 | <!-- fragment_navigation_drawer.xml --> |
strings.xml
中定义ActonBarDrawerToggle的Open和Close字符值:
1 | <string name="drawer_open">Open</string> |
看看效果:
可以看到侧滑菜单遮住了Toolbar,如果我想要另一种效果呢,也就是侧滑菜单在Toolbar下面。方法很简单,把Toobar的layout和drawerlayout放到同级布局文件里面即可。下面创建一个新的布局:
1 |
|
在MainActivity中引用该布局,看看效果:
我们看到有些应用在侧边栏展开的时候,Toobar会逐渐变暗,这个效果只需要在ActonBarDrawerToggle实例中实现该方法就行了:
1 |
|
效果也是杠杠的: