[Android] ActionBar 顯示overflow (就是後邊三個點兒的按鈕)

來源:互聯網
上載者:User

標籤:

顯示3個點的更多action button

從上面的代碼我們知道,即使我們橫屏也顯示不出全部action button。我們可以加入3個點的action button來用下拉顯示的方式,顯示跟多的action button。在網上的資訊得知,只要你的手機有menu鍵actionbar就不會顯示3個點的更多或者說3個點的menu按鈕。

 

  1. private void getOverflowMenu() {  
  2.    
  3.      try {  
  4.         ViewConfiguration config = ViewConfiguration.get(this);  
  5.         Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");  
  6.         if(menuKeyField != null) {  
  7.             menuKeyField.setAccessible(true);  
  8.             menuKeyField.setBoolean(config, false);  
  9.         }  
  10.     } catch (Exception e) {  
  11.         e.printStackTrace();  
  12.     }  
  13. }  


onCreat()方法中調用這個方法可以顯示3個點的menu按鈕。是按下3個點的action button的效果

  • 對於很多PAD來說:ActionBar中空間足夠顯示的話,那麼對應的menu菜單,只有不設定為ifRoom,然後才可以被放到overflow中:
  • 對於很多手機來說:ActionBar中沒有足夠的控制項顯示所有的菜單的話,即使是設定了ifRoom,很多菜單本來也也還是無法全部顯示,所以:即使設定了ifRoom的menu的item,以及沒有設定ifRoom的menu的item,都會被放到overflow中的
  1. <menu xmlns:android="http://schemas.android.com/apk/res/android" >  
  2.     <item  
  3.         android:id="@+id/menu_settings"  
  4.         android:orderInCategory="100"  
  5.         android:showAsAction="never"  
  6.         android:title="settings"/>  
  7.     <item  
  8.         android:id="@+id/action_refresh"  
  9.         android:icon="@drawable/navigation_refresh"  
  10.         android:orderInCategory="101"  
  11.         android:showAsAction="ifRoom|withText"  
  12.         android:title="refresh"/>  
  13.     <item  
  14.         android:id="@+id/action_about"  
  15.         android:icon="@drawable/action_about"  
  16.         android:orderInCategory="101"  
  17.         android:showAsAction="ifRoom"  
  18.         android:title="about"/>  
  19.     <item  
  20.         android:id="@+id/action_search"  
  21.         android:icon="@drawable/action_search"  
  22.         android:orderInCategory="103"  
  23.         android:showAsAction="ifRoom"/>  
  24.     <item  
  25.         android:id="@+id/action_edit"  
  26.         android:icon="@android:drawable/ic_menu_edit"  
  27.         android:orderInCategory="105"  
  28.         android:showAsAction="ifRoom"  
  29.         android:title="edit"/>  
  30.     <item  
  31.         android:id="@+id/action_help"  
  32.         android:showAsAction="always"  
  33.         android:title="help"/>  
  34.     <item  
  35.         android:id="@+id/action_email"  
  36.         android:icon="@android:drawable/ic_dialog_email"  
  37.         android:orderInCategory="106"  
  38.         android:showAsAction="ifRoom"  
  39.         android:title="email"/>  
  40. </menu> 
  1. package com.example.demo_actionbarbasic;  
  2. import com.example.demo_actionbarbasic.R;  
  3. import android.app.ActionBar;  
  4. import android.app.Activity;  
  5. import android.content.Intent;  
  6. import android.os.Bundle;  
  7. import android.view.Menu;  
  8. import android.view.MenuItem;  
  9. import android.widget.Toast;  
  10.   
  11. public class MainActivity extends Activity {  
  12.     private MenuItem menuItem = null;  
  13.       
  14.     @Override  
  15.     protected void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.         setContentView(R.layout.activity_main);  
  18.         // 通過hilde()和show()方法可以控制actionbar的隱藏和顯示  
  19.         // ActionBar actionBar = getActionBar();  
  20.         // actionBar.hide();  
  21.         // actionBar.show();  
  22.     }  
  23.   
  24.     // 我們可以看到,actonbar的用法跟選項菜單是一樣的  
  25.     @Override  
  26.     public boolean onCreateOptionsMenu(Menu menu) {  
  27.         // Inflate the menu; this adds items to the action bar if it is present.  
  28.         getMenuInflater().inflate(R.menu.activity_main, menu);  
  29.         return true;  
  30.     }  
  31.   
  32.     @Override  
  33.     public boolean onOptionsItemSelected(MenuItem item) {  
  34.         switch (item.getItemId()) {  
  35.         case R.id.action_refresh:  
  36.             Toast.makeText(this, "Menu Item refresh selected",  
  37.                     Toast.LENGTH_SHORT).show();  
  38.             break;  
  39.         case R.id.action_about:  
  40.             Toast.makeText(this, "Menu Item about selected", Toast.LENGTH_SHORT)  
  41.                     .show();  
  42.             break;  
  43.         case R.id.action_edit:  
  44.             Toast.makeText(this, "Menu Item edit selected", Toast.LENGTH_SHORT)  
  45.                     .show();  
  46.             break;  
  47.         case R.id.action_search:  
  48.             Toast.makeText(this, "Menu Item search selected",  
  49.                     Toast.LENGTH_SHORT).show();  
  50.             break;  
  51.         case R.id.action_help:  
  52.             Toast.makeText(this, "Menu Item  settings selected",  
  53.                     Toast.LENGTH_SHORT).show();  
  54.             break;  
  55.         default:  
  56.             break;  
  57.         }  
  58.         return super.onOptionsItemSelected(item);  
  59.     }  

轉載自:http://www.cnblogs.com/SharkBin/p/3559213.html

[Android] ActionBar 顯示overflow (就是後邊三個點兒的按鈕)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.