使用Menu制作弹出菜单

使用Menu可以作为Android 点击菜单键后弹出菜单使用,这在一些常见的软件中很常见,比如,一些社交软件常,为用户实时提供多选项弹出菜单服务。
现在使用Menu实现该功能。

Java代码如下:

package com.example.zhucaidan;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.Toast;

public class MainActivity extends Activity {

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

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
public void My(final String s) {
		AlertDialog dialog = new AlertDialog.Builder(this).create();
		dialog.setTitle("你确定这要操作吗?");
		dialog.setMessage("真的要这样做吗?");
		dialog.setButton(AlertDialog.BUTTON_POSITIVE, "确定",
				new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Toast.makeText(getApplicationContext(), "已经成功" + s,
								Toast.LENGTH_SHORT).show();
					}
				});
		dialog.show();
	}
@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		int id = item.getItemId();
if (id == R.id.list) {
			AlertDialog dialog = new AlertDialog.Builder(this).setItems(items,
					new DialogInterface.OnClickListener() {

						@Override
						public void onClick(DialogInterface dialog, int which) {
							My(items[which]);
						}
					}).create();
			dialog.setTitle("菜单");

			dialog.show();
		}
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}

}


以上代码可以实现类似下图的效果:

用户第一次点击菜单键会弹出以下界面

使用Menu制作弹出菜单_第1张图片

在菜单内用户点击选项后可以实现下面的效果:

使用Menu制作弹出菜单_第2张图片



要实现类似下列图片中的效果

使用Menu制作弹出菜单_第3张图片

java代码


		if (id == R.id.siplist) {

			AlertDialog.Builder builder = new AlertDialog.Builder(this);
			builder.setSingleChoiceItems(items, -1,
					new DialogInterface.OnClickListener() {

						@Override
						public void onClick(DialogInterface dialog, int which) {
							// TODO Auto-generated method stub
							Toast.makeText(getApplicationContext(),
									"成功" + items[which], Toast.LENGTH_SHORT)
									.show();
							dialog.dismiss();
						}
					});
			AlertDialog dialog = builder.create();
			dialog.show();
		}


 
  

实现多选效果

使用Menu制作弹出菜单_第4张图片


Java代码:

		//实现多选
		final String[] items = { "转发至新浪微博", "转发至QQ好友", "转发至微信" };
		if (id == R.id.mslsit) {
			AlertDialog.Builder builder = new AlertDialog.Builder(this);
			final boolean[] S1 = { false, false, false };
			builder.setMultiChoiceItems(items, S1,
					new DialogInterface.OnMultiChoiceClickListener() {

						@Override
						public void onClick(DialogInterface dialog, int which,
								boolean isChecked) {
							// TODO Auto-generated method stub

						}
					});
			AlertDialog dialog = builder.create();
			dialog.setButton(AlertDialog.BUTTON_POSITIVE, "确定",
					new DialogInterface.OnClickListener() {

						@Override
						public void onClick(DialogInterface dialog, int which) {
							// TODO Auto-generated method stub
							String s = "选择了";
							for (int j = 0; j < S1.length; j++) {
								if (S1[j]) {
									s = s + items[j];
								}
							}
							Toast.makeText(getApplicationContext(), s,
									Toast.LENGTH_SHORT).show();

						}
					});
			dialog.show();
		}




要实现该效果所需XML:


	 
	 
	 
	 
	 
	 
   	 
   	 
   	  
    

   




你可能感兴趣的:(android)