简单粗暴,会用就好!toolbar的简单使用。
1,首先找到res-values-styles.xml文件,将其中的DarkActionBar换成NoActionBar().
2,在activity的布局文件中引入Toolbar;<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">//DarkActionBar换成NoActionBar. <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> </resources>
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="oschina.itheima.com.materialdemo.MainActivity"> <android.support.v7.widget.Toolbar android:id="@+id/tool_bar" android:background="?attr/colorPrimary" //设置背景 android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"//ToolBar的主题样式设置为ThemeOverlay.AppCompat.Dark.ActionBar3,MainActivity逻辑处理。app:popupTheme="@style/ThemeOverlay.AppCompat.Light" //设置菜单项的主题样式,当然可以不设置,你可以试试加或不加有什么效果。android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"/> //指定Toolbar的高度</RelativeLayout>
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar);//找到toolbar setSupportActionBar(toolbar);//必须要有这个方法 }这样就做成了简单的toolbar。看上去跟之前的ActionBar没什么两样。但是它拥有了MaterialDesign效果的能力。
4,toolbar的显示文字在哪里改?
在配置文件里,在toolber所在的activity节点下加上android:label="要显示的文字";属性就可以了。
因为我是在MainActivity中使用的toolbar所以我加了一个android:label="Try_to_be_yourself";的显示文字。
<activity android:name=".MainActivity" android:label="Fruits"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>5,我们还可以对在toolbar里面添加一些action按钮来丰富toolbar的功能。
首先我在res目录下New一个Directory,注意文件名一定要是:menu
然后在menu文件夹--New--Menu resource file.创建一个toolbar.xml文件。
我的menu是这样写的。
<?xml version="1.0" encoding="utf-8"?> <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="@drawable/ic_yun" app:showAsAction="always" android:title="backup" /> <item android:id="@+id/delete" android:icon="@drawable/ic_delete" app:showAsAction="ifRoom" android:title="Delete" /> <item android:id="@+id/settings" android:icon="@drawable/ic_caidan" app:showAsAction="never" android:title="Settings" /> <item android:id="@+id/two" android:icon="@drawable/ic_yun" app:showAsAction="never" android:title="Settings" /> <item android:id="@+id/three" android:icon="@drawable/ic_delete" app:showAsAction="never" android:title="Settings" /> </menu>用app:showAsAction来指定按钮的显示位置,注意这里用的是app,而不是android。原因是为了兼容低版本。
showAsAction有以下几种值可选:always表示永远显示在toolbar中如果屏幕空间不够,那就不显示了。
ifRoom表示屏幕空间足够的情况下显示在toolbar上,不够的话就显示在菜单当中。
never表示永远显示在菜单当中。
注意:toolbar中的action按钮只会显示图片,菜单中的action按钮只会显示文字。
6,修改MainActivity中的代码。
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.toolbar,menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.backup: Toast.makeText(this,"点击backup",Toast.LENGTH_SHORT).show(); break; case R.id.delete: Toast.makeText(this,"点击delete",Toast.LENGTH_SHORT).show(); break; case R.id.settings: Toast.makeText(this,"点击settings",Toast.LENGTH_SHORT).show(); break; } return true; }
我们先在onCreateOptionsMenu();方法中加载了,toolbar.xml这个菜单文件,然后在onOptionsItemSelected(),方法中处理各个按钮的点击事件。