Android ActionBar Item学习笔记

来源:互联网 发布:ubuntu如何安装vmtools 编辑:程序博客网 时间:2024/05/21 10:57

Android ActionBar Item学习笔记

分类: Android 控件 367人阅读 评论(0)收藏 举报

本例主要讲述ActionBar Item的使用方法。在手机上,按Menu键出现Menu菜单,但是在平板中可以把菜单放在ActionBar里面,放置的Item也比手机上多,下面详细介绍其用法:

1、在Androidmanifest.xml里面加上<uses-sdkandroid:minSdkVersion="11"/>或者<uses-sdk android:targetSdkVersion="11"/>,要使版本号在3.0以上,这样系统就自动把Menu放在ActionBar上面。

2、准备一个menu.xml,以便加载。其实这就是一个传统的menu布局,只是多了android:showAsAction="ifRoom|withText"这个属性,ifRoom的意思就是说只要ActionBar上有空间,就把该Item显示出来,否则就坠在后面。

view plain
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <item android:id="@+id/action_search"  
  4.           android:icon="@android:drawable/ic_menu_search"  
  5.           android:title="action_bar_search"  
  6.           android:showAsAction="ifRoom"  
  7.           android:actionViewClass="android.widget.SearchView" />  
  8.     <item android:id="@+id/action_add"  
  9.           android:icon="@android:drawable/ic_menu_add"  
  10.           android:title="action_bar_add" />  
  11.     <item android:id="@+id/action_edit"  
  12.           android:icon="@android:drawable/ic_menu_edit"  
  13.           android:showAsAction="always"  
  14.           android:title="action_bar_edit" />  
  15.     <item android:id="@+id/action_share"  
  16.           android:icon="@android:drawable/ic_menu_share"  
  17.           android:title="action_bar_share"  
  18.           android:showAsAction="ifRoom" />  
  19.     <item android:id="@+id/action_sort"  
  20.           android:icon="@android:drawable/ic_menu_sort_by_size"  
  21.           android:title="action_bar_sort"  
  22.           android:showAsAction="ifRoom">  
  23.         <menu>  
  24.             <item android:id="@+id/action_sort_size"  
  25.                   android:icon="@android:drawable/ic_menu_sort_by_size"  
  26.                   android:title="action_bar_sort_size"  
  27.                   android:onClick="onSort" />  
  28.             <item android:id="@+id/action_sort_alpha"  
  29.                   android:icon="@android:drawable/ic_menu_sort_alphabetically"  
  30.                   android:title="action_bar_sort_alpha"  
  31.                   android:onClick="onSort" />  
  32.         </menu>  
  33.     </item>  
  34. </menu>  

3、Activity中的代码:

view plain
  1. <pre class="java" name="code">import android.app.Activity;  
  2. import android.graphics.drawable.Drawable;  
  3. import android.os.Bundle;  
  4. import android.view.Menu;  
  5. import android.view.MenuInflater;  
  6. import android.view.MenuItem;  
  7. import android.widget.SearchView;  
  8. import android.widget.SearchView.OnQueryTextListener;  
  9. import android.widget.TextView;  
  10. import android.widget.Toast;  
  11.   
  12. /** 
  13.  * This demonstrates idiomatic usage of the Action Bar. The default Honeycomb theme 
  14.  * includes the action bar by default and a menu resource is used to populate the 
  15.  * menu data itself. If you'd like to see how these things work under the hood, see 
  16.  * ActionBarMechanics. 
  17.  */  
  18. public class ActionBarUsageActivity extends Activity implements OnQueryTextListener {  
  19.     TextView mSearchText;  
  20.     int mSortMode = -1;  
  21.   
  22.     @Override  
  23.     protected void onCreate(Bundle savedInstanceState) {  
  24.         super.onCreate(savedInstanceState);  
  25.         mSearchText = new TextView(this);  
  26.         setContentView(mSearchText);  
  27.     }  
  28.     //和加载传统的menu一样,重写onCreateOptionsMenu方法  
  29.     @Override  
  30.     public boolean onCreateOptionsMenu(Menu menu) {  
  31.         MenuInflater inflater = getMenuInflater();  
  32.         inflater.inflate(R.menu.actions, menu);  
  33.         SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();  
  34.         searchView.setOnQueryTextListener(this);  
  35.         return true;  
  36.     }  
  37.   
  38.     @Override  
  39.     public boolean onPrepareOptionsMenu(Menu menu) {  
  40.         if (mSortMode != -1) {  
  41.             Drawable icon = menu.findItem(mSortMode).getIcon();  
  42.             menu.findItem(R.id.action_sort).setIcon(icon);  
  43.         }  
  44.         return super.onPrepareOptionsMenu(menu);  
  45.     }  
  46.   //和相应传统的menu一样,重写onOptionsItemSelected方法  
  47.     @Override  
  48.     public boolean onOptionsItemSelected(MenuItem item) {  
  49.         Toast.makeText(this"Selected Item: " + item.getTitle(), Toast.LENGTH_SHORT).show();  
  50.         return true;  
  51.     }  
  52.   
  53.     // This method is specified as an onClick handler in the menu xml and will  
  54.     // take precedence over the Activity's onOptionsItemSelected method.  
  55.     // See res/menu/actions.xml for more info.  
  56.     public void onSort(MenuItem item) {  
  57.         mSortMode = item.getItemId();  
  58.         // Request a call to onPrepareOptionsMenu so we can change the sort icon  
  59.         invalidateOptionsMenu();  
  60.     }  
  61.   
  62.     // The following callbacks are called for the SearchView.OnQueryChangeListener  
  63.     // For more about using SearchView, see src/.../view/SearchView1.java and SearchView2.java  
  64.     public boolean onQueryTextChange(String newText) {  
  65.         newText = newText.isEmpty() ? "" : "Query so far: " + newText;  
  66.         mSearchText.setText(newText);  
  67.         return true;  
  68.     }  
  69.   
  70.     public boolean onQueryTextSubmit(String query) {  
  71.         Toast.makeText(this"Searching for: " + query + "...", Toast.LENGTH_SHORT).show();  
  72.         return true;  
  73.     }  


原创粉丝点击