android选项菜单示例

Android选项菜单是android的主要菜单。它们可用于设置,搜索,删除项目等。

在这里,我们将看到两个选项菜单示例。首先是简单的选项菜单,其次是带有图像的选项菜单。

在这里,我们通过调用MenuInflater类的inflate()方法来膨胀菜单。要对菜单项执行事件处理,你需要重写Activity类的onOptionsItemSelected()方法。

Android选项菜单示例

让我们看看如何在android中创建菜单。让我们看一下包含三个菜单项的简单选项菜单示例。

activity_main.xml

该文件中只有一个textview。

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="example.srcmini02.com.optionmenu.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_main" />

</android.support.design.widget.CoordinatorLayout>
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="example.srcmini02.com.optionmenu.MainActivity"
    tools:showIn="@layout/activity_main">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

menu_main.xml

它包含三个项目,如下所示。它是在res / menu目录中自动创建的。

<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="example.srcmini02.com.optionmenu.MainActivity">

    <item  android:id="@+id/item1"
        android:title="Item 1"/>
    <item  android:id="@+id/item2"
        android:title="Item 2"/>
    <item  android:id="@+id/item3"
        android:title="Item 3"
        app:showAsAction="withText"/>
</menu>

活动类

此类显示menu.xml文件的内容,并在单击菜单项时执行事件处理。

package example.srcmini02.com.optionmenu;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }

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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
       int id = item.getItemId();
        switch (id){
            case R.id.item1:
                Toast.makeText(getApplicationContext(), "Item 1 Selected", Toast.LENGTH_LONG).show();
                return true;
            case R.id.item2:
                Toast.makeText(getApplicationContext(), "Item 2 Selected", Toast.LENGTH_LONG).show();
                return true;
            case R.id.item3:
                Toast.makeText(getApplicationContext(), "Item 3 Selected", Toast.LENGTH_LONG).show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

输出:

输出时无需单击菜单按钮。

单击菜单按钮后的输出。


单击第二个菜单项后的输出。


带图标的选项菜单

你需要在res / drawable目录中具有图标图像。 android:icon元素用于在选项菜单上显示图标。你可以在strings.xml文件中写入字符串信息。但是我们已经将它写在menu_main.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="example.srcmini02.com.optionmenu.MainActivity">

    <item  android:id="@+id/item1"
        android:title="Item 1"
        app:showAsAction="always"
        android:icon="@android:drawable/btn_star"/>
    <item  android:id="@+id/item2"
        android:title="Item 2"
        app:showAsAction="ifRoom"
        android:icon="@android:drawable/btn_plus"/>
    <item  android:id="@+id/item3"
        android:title="Item 3"
        app:showAsAction="withText"
        android:icon="@android:drawable/btn_plus"/>
</menu>
微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?