actionbar

创建actionbar的两种方式

两种方法,第一种是静态开启方法
把application 或者 activity的主题设置为Theme.Holo即可

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.baidu.homer"
     android:versionCode="1"
     android:versionName="1.0">
  <uses-sdk android:minSdkVersion="18"/>
  <application android:label="@string/app_name" android:icon="@drawable/ic_launcher"
      android:theme="@android:style/Theme.Holo">
    <activity android:name="MyActivity"
         android:label="@string/app_name">
      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
    </activity>
  </application>
</manifest>

第二种是动态开启

import android.app.ActionBar;
import android.app.Activity;
import android.drm.DrmStore;
import android.os.Bundle;

public class MyActivity extends Activity {
  /**
   * Called when the activity is first created.
   */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ActionBar actionBar = getActionBar();
    actionBar.show();
  }
}

使用ActionBar

开发API11以下的程序,首先必须在AndroidManifest.xml中指定Application或Activity的theme是Theme.Holo或其子类,否则将无法使用ActionBar。

2.1 创建Actions

Actions即ActionBar中的每个交互项,可以在代码中创建Action,也可以在XML文件中指定(位于res/menu)。在menu资源文件中定义Action的方法如下:

[java]  view plain  copy
  1. <menu xmlns:android="http://schemas.android.com/apk/res/android" >  
  2.     <item  
  3.         android:id="@+id/action_refresh"  
  4.         android:orderInCategory="100"  
  5.         android:showAsAction="always"  
  6.         android:icon="@drawable/ic_action_refresh"  
  7.         android:title="Refresh"/>  
  8.     <item  
  9.         android:id="@+id/action_settings"  
  10.         android:title="Settings">  
  11.     </item>  
  12. </menu>   
showAsAction属性用来定义每个Action是如何显示的,always表示
永远显示在ActionBar中,如果屏幕空间不够则无法显示,ifRoom表示屏幕空间够的情况下显示在ActionBar中,不够的话就显示在overflow中,never则表示永远显示在overflow中。
在Activity中创建ctionBar的Action代码位于onCreateOptionsMenu()中,下面一段代码展示了创建过程:

[java]  view plain  copy
  1. @Override  
  2.   public boolean onCreateOptionsMenu(Menu menu) {  
  3.     MenuInflater inflater = getMenuInflater();  
  4.     inflater.inflate(R.menu.mainmenu, menu);  
  5.     return true;  
  6.   }   
2.2 Action的按钮交互

如果一个Action被单击,对于activity中的onOptionsItemSelected()将被调用。该函数的传入参数是一个MenuItem。通过判断该MenuItem的Id,即可确认是哪个Action被单击。下面代码展示了该函数的使用过程。

[java]  view plain  copy
  1. Override  
  2.   public boolean onOptionsItemSelected(MenuItem item) {  
  3.     switch (item.getItemId()) {  
  4.     // action with ID action_refresh was selected  
  5.     case R.id.action_refresh:  
  6.       Toast.makeText(this"Refresh selected", Toast.LENGTH_SHORT)  
  7.           .show();  
  8.       break;  
  9.     // action with ID action_settings was selected  
  10.     case R.id.action_settings:  
  11.       Toast.makeText(this"Settings selected", Toast.LENG  
  12.           .show();  
  13.       break;  
  14.     default:  
  15.       break;  
  16.     }  
  17.     return true;  
  18.   }   

onCreateOptionsMenu()只会被调用一次。若想改变Menu,可以调用invalidateOptionsMenu(),这会使onCreateOptionsMenu()将会再次被调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值