Android:以编程方式打开菜单

时间:2016-11-18 03:18:06

标签: android android-menu

我一直在尝试为我的Android应用程序添加一项功能,以便当我点击一个按钮时,菜单列表应该是可见的:

这是我的代码:

menu.xml文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:tools="http://schemas.android.com/tools"
      tools:context="com.example.MainActivity" >

    <item android:id="@+id/action_onthego_sentence"
          android:title="settings"
          android:orderInCategory="100"
          app:showAsAction="never" />

</menu>

在主要活动中,点击按钮后,我会:

        button.setOnClickListener( new View.OnClickListener()
        {
            @Override
            public void onClick( View view )
            {
                runOnUiThread( new Runnable()
                {
                    @Override
                    public void run()
                    {
                        openOptionsMenu();
                    }
                } );
            }
        } );

我需要的是:

enter image description here

如图所示,我希望看到菜单已打开。有什么建议吗?

5 个答案:

答案 0 :(得分:3)

如果您在应用中使用自定义工具栏,则以下方式将非常有用,

 new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    toolbar.showOverflowMenu();
                }
            }, 500);

答案 1 :(得分:1)

使用:

error: cannot find symbol
import android.support.v4.app.DialogFragment;
^
error: cannot find symbol
import android.support.v4.app.FragmentActivity;

然后,检查您的工具栏是否可以。

MainActivity.this.openOptionsMenu();

答案 2 :(得分:1)

在菜单布局中使用它:

<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="Setting"
app:showAsAction="ifRoom" />

答案 3 :(得分:1)

你好亲爱的,如果你使用工具栏代码

toolbar.showOverflowMenu();

另外你可以直接打电话

MainActivity.this.openOptionsMenu();

答案 4 :(得分:0)

尝试以下解决方案将显示点击按钮菜单列表应该是可见的:

<强> RES /菜单/ main.xml中

     <?xml version="1.0" encoding="utf-8"?>
     <menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
      android:id="@+id/action_changeLang"
      android:orderInCategory="100"
      android:title="Change Lang" />
  <item
      android:id="@+id/action_color"
      android:orderInCategory="100"
      android:title="Select color" />
  <item
      android:id="@+id/action_applist"
      android:orderInCategory="100"
      android:title="App List" />
 </menu>

<强> MainActivity.java

     @Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    switch (id) {
        case R.id.action_changeLang:
              // Add your code
            break;
        case R.id.action_color:
            // Add your code
            break;
        case R.id.action_applist:
            // Add your code
            break;
   }
    return super.onOptionsItemSelected(item);
  }

尝试使用上述解决方案。它对我有用