选项菜单和上下文菜单

选项菜单和上下文菜单

一、选项菜单

案例:点击三个点出现选项
在这里插入图片描述
1.定义menu文件:res-new-menu-menu.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"
        xmlns:tools="http://schemas.android.com/tools"
        tools:context=".MainActivity">
    <item
        android:id="@+id/menu1"
        android:orderInCategory="3"
        android:title="景区" />
    <item
        android:id="@+id/menu2"
        android:orderInCategory="2"
        android:title="交通" />
    <item
        android:id="@+id/menu3"
        android:orderInCategory="5"
        android:title="美食" />

</menu>

java文件:重写onCreateOptionsMenu方法

package com.example.acer.optionsmean;

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

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    @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, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu1:
                Toast.makeText(MainActivity.this, "你选择了景区", Toast.LENGTH_SHORT).show();
                break;
            case R.id.menu2:
                Toast.makeText(MainActivity.this, "你选择了交通", Toast.LENGTH_SHORT).show();
                break;
            case R.id.menu3:
                Toast.makeText(MainActivity.this, "你选择了美食", Toast.LENGTH_SHORT).show();
                break;

        }
        return super.onOptionsItemSelected(item);
    }
    @Override
    public boolean onMenuOpened(int featureId, Menu menu) {
        Toast.makeText(MainActivity.this, "选项菜单开启", Toast.LENGTH_SHORT).show();
        return super.onMenuOpened(featureId, menu);
    }
    @Override
    public void onOptionsMenuClosed(Menu menu) {
        super.onOptionsMenuClosed(menu);
        Toast.makeText(MainActivity.this, "选项菜单关闭", Toast.LENGTH_SHORT).show();
    }
    }

二、上下文菜单

1.xml布局文件:布局图片或者文字,长按弹出指示
演示效果
在这里插入图片描述

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tx"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="精彩瞬间"
        android:textSize="30dp"
        android:textColor="#879"
       />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/sc"
        android:id="@+id/image"
        android:layout_centerInParent="true"/>

</RelativeLayout>

menu文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@+id/action_settings"
    android:title="@string/action_settings"
    ></item>
<item
    android:id="@+id/action_share"
    android:title="@string/action_share"
    ></item>
</menu>

string.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">上下文菜单</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">收藏</string>
    <string name="action_share">分享</string>
</resources>

java文件

package com.example.acer.contentmenu;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {
ImageView image;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        image= (ImageView) findViewById(R.id.image);
        registerForContextMenu(image);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        MenuInflater inflater=new MenuInflater(this);
        inflater.inflate(R.menu.menu,menu);
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.action_settings:
                Toast.makeText(MainActivity.this,"已收藏",Toast.LENGTH_LONG).show();
                break;
            case R.id.action_share:
                Toast.makeText(MainActivity.this,"已分享",Toast.LENGTH_LONG).show();
                break;
        }
        return true;
}
发布了55 篇原创文章 · 获赞 5 · 访问量 4143

猜你喜欢

转载自blog.csdn.net/qq_43654669/article/details/103647914