MaterialDesign

2017-07-22  本文已影响0人  熊大哥87

谷歌提出的 Material Design,Design Support库,对于一些常用的效果和控件进行封装。使用Material Design 就要隐藏掉ActionBar,修改软件的主题显示样式,就在style.xml文件里面,替换掉下面这句,这句parent和面跟的就是隐藏ActionBar的主题

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

ToolBar

<android.support.v7.widget.Toolbar 
android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"//和原有Bar一样高 
android:background="?attr/colorPrimary" android:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"//指定ToolBar主题 app:layout_scrollFlags="scroll|enterAlways|snap" />
<!--Toobar在APPBarlayout中添加这个属性ToolBar会跟着主题内容上滑隐藏,下划出现-->

在ToolBar上添加action按钮,在res目录,新建Directory文件夹(menu),创建一个yoolbar.xml文件,showAsAction属性是设置按钮的显示,always永远显示在Toolbar 中,屏幕空间不够则不显示,ifRoom表示屏幕有足够空间句显示,否则就显示在菜单中,nerve表示永远显示在菜单中,
注:ToolBar中的action只会显示图标。而action按钮只会显示文字

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
    android:id="@+id/backup"
    android:icon="@mipmap/ic_backup"
    android:title="Backup"
    app:showAsAction="always"/>//总是显示
    <item
        android:id="@+id/delete"
        android:icon="@mipmap/ic_delete"
        android:title="Delete"
        app:showAsAction="ifRoom"/>//屏幕充足显示
    <item
        android:id="@+id/settings"
        android:icon="@mipmap/ic_delete"
        android:title="Settings"
        app:showAsAction="never"/>//从不显示
    <item
        android:id="@+id/startactivty"
        android:icon="@mipmap/ic_add"
        android:title="StartActivity"
        app:showAsAction="always"/>
</menu>

在主函数中设置并且重写onCreateOptionsMenu()方法,添加空间到ToolBar

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar);
 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.toolbar, menu); 
return true;
 }

DrawerLayout是一个布局,在布局里面只允许放两个直接子控件,第一个是主屏幕显示的内容,第二个是滑动菜单中显示的内容。,第二个子控件加黑需要注意,必须添加,该属性是指,在手机哪一侧划出菜单,star根据系统语言进行判断,left,由左向右划出,right相反

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.ca.sd.zsl.toolbartest" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent"
 tools:context="text.materialdesign.MainActivity"> 
<FrameLayout
android:layout_width="match_parent" 
 android:layout_height="match_parent">
 <android.support.v7.widget.Toolbar 
android:id="@+id/toolbar"
 android:layout_width="match_parent" 
android:layout_height="?attr/actionBarSize" 
android:background="?attr/colorPrimary" 
android:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
</FrameLayout> 
<TextView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"
    android:layout_gravity="start"//   
   android:text="这是侧滑菜单" />
</android.support.v4.widget.DrawerLayout>
//设置按钮弹出菜单
 mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);//先获取布局实例, 
ActionBar actionBar = getSupportActionBar();然后获取ActionBar实例,
 if (actionBar != null) { 
actionBar.setDisplayHomeAsUpEnabled(true);//让按钮显示出来 
actionBar.setHomeAsUpIndicator(R.drawable.ic_menu);//设置图片 }
home按钮的点击事件,重写onOptionsItemSelected方法。
 @Override public boolean onOptionsItemSelected(MenuItem item)
 { switch (item.getItemId()) 
在ToolBar最左侧的图标就叫做HomeAsUp按钮,它的ID永远是android.R.id.home
 case android.R.id.home:STAR:
  mDrawerLayout.openDrawer(GravityCompat.START);//打开视图到x轴的开始位置,不改变大小,END:打开视图到x轴的结束位置,不改变大小 
 break;
default: break;
 } 
return true; 
}
上一篇下一篇

猜你喜欢

热点阅读