2013-08-22 140 views
2

如何在圖標和標題的網格中創建此類子菜單。Android:選項菜單+操作欄

enter image description here

+0

您正在使用的ActionBar福爾摩斯? – Nizam

+0

是m使用操作欄與sherlock庫 –

+0

子菜單選項列表iiw工作,但我想要網格圖標和標題 –

回答

0

您應該使用簡單操作菜單是一個彈出式組件,它能夠顯示一個對象上執行的操作。它也可以用來顯示自定義消息,如錨定到屏幕某個組件的工具提示彈出窗口。

採取看看QuickActionMenu

QuickAction Tutorial

+0

網格是可能的嗎? –

+0

我的問題是子菜單中的網格視圖。 –

+0

沒有必要使用gridview,你可以將它設置爲水平和垂直兩種方式。只需查看演示並嘗試一下。 – GrIsHu

0

我已經建立了自己的菜單(附件),像whatsapps

  1. 構建XML文件,它包含的FrameLayout所以附件可以顯示 其他佈局的前面。 xml包含每個附件類型的 的按鈕。
  2. 添加附加按鈕/添加菜單按鈕監聽器(在我的情況)。
  3. 添加布爾值,每次您改變 按下附加按鈕以打開/關閉。

這裏是我的代碼爲例:

與圖像,名稱和顏色的XML文件:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/FrameLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <LinearLayout 
     android:layout_width="263dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right" 
     android:background="#464646" 
     android:layout_marginRight="10dp" 
     android:orientation="vertical" > 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" > 

      <Button 
       android:id="@+id/button4" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_margin="1dp" 
       android:layout_weight="1" 
       android:background="#303030" 
       android:drawableTop="@drawable/attach_gallery" 
       android:text="Gallery" 
       android:textColor="#ffffff" /> 

      <Button 
       android:id="@+id/button5" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_margin="1dp" 
       android:layout_weight="1" 
       android:background="#303030" 
       android:drawableTop="@drawable/attach_camera_picture" 
       android:text="Photo" 
       android:textColor="#ffffff" /> 

      <Button 
       android:id="@+id/button6" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_margin="1dp" 
       android:layout_weight="1" 
       android:background="#303030" 
       android:drawableTop="@drawable/attach_camera_video" 
       android:text="Video" 
       android:textColor="#ffffff" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" > 

      <Button 
       android:id="@+id/button3" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_margin="1dp" 
       android:layout_weight="1" 
       android:background="#303030" 
       android:drawableTop="@drawable/attach_voice" 
       android:text="Audio" 
       android:textColor="#ffffff" /> 

      <Button 
       android:id="@+id/button2" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_margin="1dp" 
       android:layout_weight="1" 
       android:background="#303030" 
       android:drawableTop="@drawable/attach_location" 
       android:text="Location" 
       android:textColor="#ffffff" /> 

      <Button 
       android:id="@+id/button1" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_margin="1dp" 
       android:layout_weight="1" 
       android:background="#303030" 
       android:drawableTop="@drawable/attach_contacts" 
       android:text="Contact" 
       android:textColor="#ffffff" /> 
     </LinearLayout> 
    </LinearLayout> 

</FrameLayout> 

我的活動:

// attachment layout appear only on menu click 
     attachLayout = (LinearLayout) findViewById(R.id.attachLayout); 
     attachLayout.setVisibility(View.GONE); 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 
     getMenuInflater().inflate(R.menu.attach_menu, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     if (isAttachGridVisible) 
      attachLayout.setVisibility(View.INVISIBLE); 
     else{ 
      attachLayout.setVisibility(View.VISIBLE); 
     } 
     isAttachGridVisible = !isAttachGridVisible; 

     return super.onOptionsItemSelected(item); 
    } 

isAttachGridVisible是一個布爾值。

attach_menu XML菜單文件:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/attachments" 
     android:icon="@drawable/attachwhatsapp" 
     android:orderInCategory="11111" 
     android:showAsAction="always" 
     android:title=""> 

    </item> 
</menu> 

好運