package com.test.menu; import java.util.ArrayList; import java.util.HashMap; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnKeyListener; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.text.Editable; import android.text.method.KeyListener; import android.view.Gravity; import android.view.KeyEvent; import android.view.Menu; import android.view.View; import android.view.Window; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.GridView; import android.widget.SimpleAdapter; import android.widget.Toast; public class CustomerMenuActivity extends Activity { /** Called when the activity is first created. */ private View menuView; private GridView girdView; private AlertDialog menuDialog; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /** 菜单图片 **/ int[] menu_image_array = { R.drawable.more_login,R.drawable.more_regist, R.drawable.more_about, R.drawable.more_exit}; String[] names={"登录","注册","关于","退出"}; menuView=View.inflate(this, R.layout.menu, null); menuDialog=new AlertDialog.Builder(this).create(); Window window= menuDialog.getWindow(); window.setGravity(Gravity.BOTTOM); menuDialog.setView(menuView); menuDialog.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { // TODO Auto-generated method stub System.out.println("onkey"); if(keyCode==KeyEvent.KEYCODE_MENU)//监听按键 { dialog.dismiss(); } return false; } }); girdView=(GridView) menuView.findViewById(R.id.gridview); girdView.setSelector(new ColorDrawable(Color.TRANSPARENT));// 选中的时候为透明色 girdView.setAdapter(getAdapter(menu_image_array, names)); //gridview 条目点击事件 girdView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { switch (position) { case 0: Toast.makeText(CustomerMenuActivity.this, "登录", 0).show(); break; case 1: Toast.makeText(CustomerMenuActivity.this, "注册", 0).show(); break; case 2: Toast.makeText(CustomerMenuActivity.this, "关于", 0).show(); break; case 3: Toast.makeText(CustomerMenuActivity.this, "退出", 0).show(); break; } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub menu.add("menu");//必须创建一项 return super.onCreateOptionsMenu(menu); } @Override public boolean onMenuOpened(int featureId, Menu menu) { if(menuDialog==null){ menuDialog=new AlertDialog.Builder(this).setView(menuView).show(); }else{ menuDialog.show(); } return false;// 返回为true 则显示系统menu } private SimpleAdapter getAdapter(int []img, String[] names ){ ArrayList<HashMap<String, Object>> data=new ArrayList<HashMap<String,Object>>(); for(int i=0;i<names.length;i++){ HashMap<String, Object> map=new HashMap<String, Object>(); map.put("img", img[i]); map.put("text", names[i]); data.add(map); } SimpleAdapter adapter=new SimpleAdapter(this, data, R.layout.menu_item, new String[]{"img","text"}, new int[]{R.id.item_image,R.id.item_text}); return adapter; } }
布局文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout_Item" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingBottom="1dip" > <ImageView android:id="@+id/item_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" > </ImageView> <TextView android:id="@+id/item_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/item_image" android:layout_centerHorizontal="true" android:text="文字" > </TextView> </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <GridView android:id="@+id/gridview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:numColumns="4" android:verticalSpacing="1dip" android:horizontalSpacing="1dip" android:stretchMode="columnWidth" android:gravity="center" /> </LinearLayout>