如何获取其5个menuItem在单行上的菜单?

时间:2011-12-26 05:27:24

标签: android android-widget

我编写了以下代码,在同一行(行)上获得5个菜单项,但单行最多需要3个菜单项。
其余项目设置在“更多”按钮中。
那么如何在单行中获得5项?

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    try 
    {
        menu.add(0, 0, 0, "Logout").setIcon(R.drawable.logout);
        menu.add(0, 1, 1, "Refresh").setIcon(R.drawable.refresh);
        menu.add(0, 1, 2, "Settings").setIcon(R.drawable.settings);
        menu.add(0, 1, 3, "Singup").setIcon(R.drawable.signup);
        menu.add(0, 1, 4, "Add").setIcon(R.drawable.add);
    }
    catch (Exception e) 
    {
        e.printStackTrace();
    }
    return super.onCreateOptionsMenu(menu);
}

1 个答案:

答案 0 :(得分:-1)

最后我得到了多个项目的菜单。

制作以下menu_example.xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/lylMenu"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:gravity="bottom"
    android:orientation="vertical"
    android:visibility="invisible" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="#ffffff" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#ffffff"
        android:gravity="bottom|center"
        android:orientation="horizontal" >

    <Button
            android:id="@+id/mnubtnExit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="1dp"
            android:layout_weight="1.3"
            android:background="@drawable/button_selector"
            android:drawableTop="@drawable/icon_exit"
            android:text="Exit"
            android:textColor="#FFFFFF"
            android:textSize="15sp"
            android:textStyle="bold" />

        <Button
            android:id="@+id/mnubtnRefresh"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="1dp"
            android:layout_marginRight="1dp"
            android:layout_weight="1"
            android:background="@drawable/button_selector"
            android:drawableTop="@drawable/icon_refresh"
            android:text="Refresh"
            android:textColor="#FFFFFF"
            android:textSize="15sp"
            android:textStyle="bold" />

        <Button
            android:id="@+id/mnubtnExport"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="1dp"
            android:layout_weight="1"
            android:background="@drawable/button_selector"
            android:drawableTop="@drawable/icon_export"
            android:text="Export"
            android:textColor="#FFFFFF"
            android:textSize="15sp"
            android:textStyle="bold" />

        <Button
            android:id="@+id/mnubtnDelete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="1dp"
            android:layout_weight="0.9"
            android:background="@drawable/button_selector"
            android:drawableTop="@drawable/icon_delete"
            android:text="Delete All"
            android:textColor="#FFFFFF"
            android:textSize="15sp"
            android:textStyle="bold" />

        <Button
            android:id="@+id/mnubtnSettings"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="1dp"
            android:layout_weight="0.9"
            android:background="@drawable/button_selector"
            android:drawableTop="@drawable/icon_settings"
            android:text="Settings"
            android:textColor="#FFFFFF"
            android:textSize="15sp"
            android:textStyle="bold" />



    </LinearLayout>

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="#ffffff" />

</LinearLayout>

按照以下说明在所需布局文件底部应用菜单:
您必须根据菜单高度给出底部边距。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/effect_message_background"
    android:orientation="vertical" >

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    </ScrollView>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="-60dip"
        android:gravity="bottom" >

        <include layout="@layout/menu_example" />
    </RelativeLayout>

</LinearLayout>

应用以下代码进行上下滑动。

LinearLayout lyl_Menu = = (LinearLayout)findViewById(R.id.lylMenu);

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        try
        {
            if(keyCode == KeyEvent.KEYCODE_MENU)
            {
                //System.out.println("MENU PRESSED...........");
                if(lyl_Menu.isShown())
                {
                    goneFooter();
                }
                else
                {
                    visibleFooter();
                }
            }
            else if(keyCode == KeyEvent.KEYCODE_BACK)
            {
                if(lyl_Menu.isShown())
                {
                    goneFooter();
                    return true;
                }
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return super.onKeyDown(keyCode, event);
    }

    public void visibleFooter()
    {
        if(!lyl_Menu.isShown())
        {
            lyl_Menu.setVisibility(View.VISIBLE);
            lyl_Menu.startAnimation(AnimationUtils.loadAnimation(UserData.this, R.anim.slide_up_in));
        }
    }
    public void goneFooter()
    {
        if(lyl_Menu.isShown())
        {
            lyl_Menu.startAnimation(AnimationUtils.loadAnimation(UserData.this, R.anim.slide_up_out));
            lyl_Menu.setVisibility(View.INVISIBLE);
        }
    }

在res文件夹中制作动画文件夹,例如RES /阿尼姆 将以下内容放在anim文件夹中的动画xml文件中:

1)slide_up_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="300"
        android:fromYDelta="100%p"
        android:toYDelta="0%p" />
</set>

2)slide_up_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="300"
        android:fromYDelta="0%p"
        android:toYDelta="100%p" />
</set>

多数民众赞成。 享受单排多个菜单项。 :)