美化你的标题栏—ActionBar(1)添加按钮使用
1.谷歌为啥要开发出actionbar?
因为相比较苹果的UI安卓UI太丑了,所以在ui导航涉及进行了一系列的改革,并提供更为丰富的导航效果。
2.怎么使用actionbar
现在V7包里是能兼容3.0一下我将在下一节讲 V4包里是自带actionbar的
(1)一个标题,应该能隐藏或者显示 应该怎么使用
我们可以通过把主题设置为Theme.Holo.NoActionBar为一个Activity去除掉ActionBar。
<activity android:theme="@android:style/Theme.Holo.NoActionBar"> <span style="font-size:18px;">(2)通过代码</span> 我们也可以通过在代码中调用show()或者hide()方法来相应的显示或者隐藏ActionBar <span style="font-size:18px;"> (3)在我们使用actionBar.hide();方法是系统默认会将ActionBar占用的空间分配给界面,此时显示的界面将会重新绘制。 同样调用actionBar.show();时也会重新绘制界面。如果我们一个程序需要频繁的显示或者隐藏ActionBar的话,这样 就不会有良好的效果。Google提供给一个属性可以让ActionBar浮在界面上,当然你可以让ActionBar的背景为透明, 这样会有良好的体验效果。</span>
我们开始写一个demo
1、通过程序动态布局
package com.example.actionbar; import android.app.Activity; import android.app.ActionBar; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.os.Build; public class MainActivity extends Activity { private ActionBar actionBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 第一步 跟Fragment一起对比下 用法就很明朗了 actionBar = getActionBar(); // 第二步显示 actionBar.show(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // 添加菜单项,可以看的出来这个取名还是比较人性化的 MenuItem add = menu.add(0, 0, 0, "sb"); MenuItem del = menu.add(0, 0, 0, "2b"); MenuItem save = menu.add(0, 0, 0, "逗逼"); // 绑定到actionbar //SHOW_AS_ACTION_IF_ROOM 显示此项目在动作栏按钮如果系统决定有它。 可以用1来代替 add.setShowAsAction(1); del.setShowAsAction(1); save.setShowAsAction(1); return super.onCreateOptionsMenu(menu); } } <img src="http://img.blog.csdn.net/20141106104926359?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSmFja19LaW5nMDA3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />2、通过Menu.xml文件布局
R.res.menu.main.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/item1" android:orderInCategory="1" android:showAsAction="ifRoom|withText" android:title="保存"/> <item android:id="@+id/item1" android:orderInCategory="2" android:showAsAction="ifRoom|withText" android:title="编辑"/> </menu>
android:orderInCategory="1" item优先级
package com.example.actionbar; import android.app.Activity; import android.app.ActionBar; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.os.Build; public class MainActivity extends Activity { private ActionBar actionBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // // 第一步 跟Fragment一起对比下 用法就很明朗了 // actionBar = getActionBar(); // // 第二步显示 // actionBar.show(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // // 添加菜单项,可以看的出来这个取名还是比较人性化的 // MenuItem add = menu.add(0, 0, 0, "sb"); // MenuItem del = menu.add(0, 0, 0, "2b"); // MenuItem save = menu.add(0, 0, 0, "逗逼"); // // 绑定到actionbar // //SHOW_AS_ACTION_IF_ROOM 显示此项目在动作栏按钮如果系统决定有它。 // add.setShowAsAction(1); // del.setShowAsAction(1); // save.setShowAsAction(1); // return super.onCreateOptionsMenu(menu); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main, menu); return true; } }主要是靠填充 将XML填充到actionbar里面去