码迷,mamicode.com
首页 > 移动开发 > 详细

Android中的菜单

时间:2018-10-16 19:57:36      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:return   ima   扫描   search   getwidth   width   xml文件   XML   get   

***Android中的菜单

*OptionsMenu:
onCreatOptiodMenu()方法

首先在menu文件夹下创建options_menu.xml文件:

<item 
    android:id="@+id/action_search"
    android:title="@string/action_search"/>
<item 
    android:id="@+id/action_settings"
    android:title="@string/action_settings"/>

MainActivity.java中:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    //创建选项菜单--OptionsMenu
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //获取菜单填充器对象
        MenuInflater menuinflater = getMenuInflater();
        //将menu的xml文件转换成menu对象
        menuinflater.inflate(R.menu.options_menu, menu);
        //也可以通过代码形式添加菜单项
        menu.add(Menu.NONE, Menu.NONE,Menu.NONE, "扫描");
        //返回必须是true,否则不显示menu
        return true;
    }
    //处理OptionMenu的点击事件
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.action_search:
            Toast.makeText(MainActivity.this, "搜索", Toast.LENGTH_SHORT).show();
            break;
        case R.id.action_settings:
            Toast.makeText(MainActivity.this, "设置", Toast.LENGTH_SHORT).show();
        default:
            break;
        }
        return super.onOptionsItemSelected(item);   
    }
}

*ContextMenu:
onCreatContextMenu()方法

案例效果:需长按textview控件才可显示出菜单,通过选择相应的菜单项,在title中显示控件宽高

在activity_main.xml布局文件中添加一个textView控件,values文件夹下的main.xml文件中:

<item
    android:id="@+id/action_height"
    android:title="@string/action_height"/>
<item 
    android:id="@+id/action_width"
    android:title="@string/action_width"/>

MainActivity.java中:

public class MainActivity extends Activity {
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        tv = (TextView) findViewById(R.id.tv);
        registerForContextMenu(tv);//必须注册上下文菜单-->通常上下文菜单是和ListView或者GridView这种适配器控件绑定在一起
    }
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        MenuInflater menuinflater = getMenuInflater();
        menuinflater.inflate(R.menu.main, menu);
        
        super.onCreateContextMenu(menu, v, menuInfo);
    }
    
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.action_height:
            setTitle("控件的高度="+tv.getHeight());
            break;
        case R.id.action_width:
            setTitle("控件的宽度="+tv.getWidth());
        default:
            break;
        }
        return super.onContextItemSelected(item);
    }
}

技术分享图片

*PopupMenu:
PopupMenu popMenu = new PopupMenu(this,v)

案例显示效果:通过点击button按钮显示出菜单选项,通过选择相应的菜单选项设置textview中字体的增大和减小

activity_main.xml中布局:

<Button 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onClick="showPopup"
    android:textColor="#fff"
    android:background="#90C552"
    android:text="显示PopupMenu"/>

<TextView
    android:id="@+id/tv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:text="@string/hello_world" />

menu文件夹下的main.xml中设置菜单选项:

<item
    android:id="@+id/action_textadd"
    android:title="@string/action_textadd"/>
<item 
    android:id="@+id/action_textsub"
    android:title="@string/action_textsub"/>

MainActivity.java文件中:

public class MainActivity extends Activity {
    private float fontSize =15.0f;
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.tv);
    }

    public void showPopup(View view){
        PopupMenu popupmenu = new PopupMenu(this, view);//第二个参数anchor:锚点,popupmenu想要显示出来必须与一个控件绑定在一起,所以这里将其与view绑定,view也就是button
        getMenuInflater().inflate(R.menu.main, popupmenu.getMenu());
        popupmenu.show();
        //处理菜单选项点击事件
        popupmenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {
            
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()) {
                case R.id.action_textadd:
                    fontSize+=5;
                    break;
                case R.id.action_textsub:
                    fontSize-=5;
                default:
                    break;
                }
                tv.setTextSize(fontSize);
                return false;
            }
        });
    }
}

技术分享图片

Android中的菜单

标签:return   ima   扫描   search   getwidth   width   xml文件   XML   get   

原文地址:https://www.cnblogs.com/SanguineBoy/p/9800116.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!