2013-08-22 2 views
2

Как создать этот тип подменю в сетке с помощью значка и названия.Android: меню опций + панель действий

enter image description here

+0

Вы используете ActionBar Шерлока? – Nizam

+0

yes m using панель действий с sherlock libs –

+0

подменю список опций iiw работает, но я хочу сетку со значком и заголовком –

ответ

0

Вы должны использовать меню быстрого действия, которое является всплывающим, как компонентом, который отображает действия, которые могут быть выполнены на объекте. Он также может использоваться для отображения пользовательских сообщений, таких как всплывающее всплывающее подсказку, привязанное к определенному компоненту вашего экрана.

Возьмите взгляд на QuickActionMenu

QuickAction Tutorial

+0

сетка возможна? –

+0

Мой вопрос - это вид сетки в подменю. –

+0

нет необходимости использовать gridview, вы можете установить его как по горизонтали, так и по вертикали в обоих направлениях. Просто проверьте демо и попробуйте. – GrIsHu

0

Я построил свои собственные меню (вложения), как whatsapps

  1. строить XML-файл, который содержит framelayout поэтому вложение может быть показано перед другими макетами. Xml содержит кнопки для каждого типа вложения.
  2. добавить кнопку прикрепления/добавить в меню кнопку прослушивателя (в моем случае).
  3. add boolean, который изменяется каждый раз, когда вы нажмите кнопку attach, чтобы открыть/закрыть.

вот мой код в качестве примера:

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> 

Good Luck

Смежные вопросы