首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

【转】批改menu样式-背景等

2012-06-28 
【转】修改menu样式-背景等package lab.sodino.menutestimport android.content.Contextimport android.ap

【转】修改menu样式-背景等

package lab.sodino.menutest;import android.content.Context;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.util.AttributeSet;import android.view.InflateException;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.view.View;import android.widget.Toast;/** * @author Sodino E-mail:sodinoopen@hotmail.com * @version Time:2011-1-26 下午04:42:04 */public class MenuAct extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);}public boolean onCreateOptionsMenu(Menu menu) {super.onCreateOptionsMenu(menu);MenuInflater inflater = new MenuInflater(getApplicationContext());inflater.inflate(R.menu.menu, menu);setMenuBackground();return true;}public boolean onOptionsItemSelected(MenuItem item) {String info = "";switch (item.getItemId()) {case R.id.menu_add:info = "Add";break;case R.id.menu_delete:info = "Delete";break;case R.id.menu_home:info = "Home";break;case R.id.menu_help:info = "Help";break;default:info = "NULL";break;}Toast toast = Toast.makeText(this, info, Toast.LENGTH_SHORT);toast.show();return super.onOptionsItemSelected(item);}// 关键代码为重写Layout.Factory.onCreateView()方法自定义布局protected void setMenuBackground() {MenuAct.this.getLayoutInflater().setFactory(new android.view.LayoutInflater.Factory() {/** * name - Tag name to be inflated.<br/> * context - The context the view is being created in.<br/> * attrs - Inflation attributes as specified in XML file.<br/> */public View onCreateView(String name, Context context, AttributeSet attrs) {// 指定自定义inflate的对象if (name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")) {try {LayoutInflater f = getLayoutInflater();final View view = f.createView(name, null, attrs);new Handler().post(new Runnable() {public void run() {// 设置背景图片view.setBackgroundResource(R.drawable.menu_background);}});return view;} catch (InflateException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}}return null;}});}}

热点排行