zoukankan      html  css  js  c++  java
  • android之OptionMenu

    一、现在我给大家介绍两个不同版本的模拟器(2.3.3和4.0.3)

    1、布局文件

      (1)打开“res/layout/activity_main.xml”文件。

              先看mian布局文件

    <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:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />
    
    </RelativeLayout>

        (2)打开“res/menu/main.xml”文件。  输入以下代码:

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
         <item android:id="@+id/connect"  
            android:orderInCategory="100"  
            android:showAsAction="never"  
            android:icon="@android:drawable/ic_menu_send" 
            android:background="#66FFFFFF" 
            android:title="连接" />  
          
        <item android:id="@+id/disconnect"  
            android:orderInCategory="100"  
            android:showAsAction="never"  
            android:icon="@android:drawable/ic_menu_close_clear_cancel"  
            android:title="断开" />  
          
        <item android:id="@+id/search"  
            android:orderInCategory="100"  
            android:showAsAction="never"  
            android:icon="@android:drawable/ic_menu_search"  
            android:title="发现" />  
          
        <item android:id="@+id/view"  
            android:orderInCategory="100"  
            android:showAsAction="never"  
            android:icon="@android:drawable/ic_menu_view"  
            android:title="查看" />  
          
        <item android:id="@+id/help"  
            android:orderInCategory="100"  
            android:showAsAction="never"  
            android:icon="@android:drawable/ic_menu_help"  
            android:title="帮助" />  
          
        <item android:id="@+id/exit"  
            android:orderInCategory="100"  
            android:showAsAction="never"  
            android:icon="@android:drawable/ic_menu_revert"  
            android:title="退出" /> 
             
            </menu>


    2、程序文件 

      打开“src/com.genwoxue.optionsmenu/MainActivity.java”文件。

      然后输入以下代码:

    package com.example.optionmenu1;
    
    
    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;
    public class MainActivity extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
        @Override 
        public boolean onCreateOptionsMenu(Menu menu) {
            super.onCreateOptionsMenu(menu);
            MenuInflater inflater = new MenuInflater(getApplicationContext());
            inflater.inflate(R.menu.main, menu);
            setMenuBackground();
            return true;
        }
        public boolean onOptionsItemSelected(MenuItem item) {
            String info = "";
            switch (item.getItemId()) {
            case R.id.connect:
                info = "connect";
                break;
            case R.id.disconnect:
                info = "disconnect";
                break;
            case R.id.exit:
                info = "exit";
                break;
            case R.id.help:
                info = "Help";
                break;
            case R.id.search:
                info = "search";
                break;
            case R.id.view:
                info = "view";
                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() {
            MainActivity.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/>
                 */
                @Override 
                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.ic_launcher);
                                }
                            });
                            return view;
                        } catch (InflateException e) {
                            e.printStackTrace();
                        } catch (ClassNotFoundException e) {
                            e.printStackTrace();
                        }
                    }
                    return null;
                }
            });
        }
    }

    3、运行结果

    (1)2.3.3模拟器运行结果

    (2)4.0.3模拟器运行结果

    (3)、如果你已经习惯了Android2.x版本的样式,你一定会怀疑是不是搞错了,这是OptionsMenu菜单吗?

      一点不错,Android4.0菜单就变成这个样式了!如果你想要以前2.3.3版本样式,我们在<activity ……></activity>中添加了android:theme="@android:style/Theme"之后,我们再来看一下效果。只是全变成黑色。

    如果你想改变menu的背景颜色,你可以去问度娘。。。

    补充说明:

      Android4.0及以上版本,更推荐你使用ActionBar和PopupWindow!这样的效果会更好。

     

  • 相关阅读:
    二维码生成
    Tomcat 日志文件分割
    java代码优化
    User-Agent 请求消息头
    json
    Access-Control-Allow-Origin跨域请求处理
    Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public xxxxxxxx.
    Nginx的配置文件
    WebService 及 CXF 的进阶讲解
    WebService的讲解 和 CXF 的初步使用
  • 原文地址:https://www.cnblogs.com/jianrong-zheng/p/3270678.html
Copyright © 2011-2022 走看看