Android控件 Menu和Toast(转载)

    •    一:Toast

         1:作用

         它是一种显示消息的机制,与对话框不同的是

         (1)没有焦点,不能与用户交互

         (2)显示时间短,不会打扰用户操作

         (3)以浮动的View呈现,一段时间之后,自己消失

         2:创建

       (1)调用Toast的静态方法makeText(当前Activity对象,显示文本内容,显示时间),其中显示时间取值有2个,分别为Toast.LENGTH_LONG(长时间)和Toast.LENGTH_SHORT(短时间)。

         (2)调用Toast的show()方法显示提示信息。

         3:具体实现


      1.Toast.makeText(MainActivity.this, "******项被按下", Toast.LENGTH_LONG).show();  //长时间
      2.Toast.makeText(MainActivity.this, "******项被按下", Toast.LENGTH_SHORT).show(); //短时间

         二:Menu

         1:分类

      ◆选项菜单

         一般的Android手机的通讯录中会有这样一个控件,当我们单击菜单键的时候,从底部弹出六个选项,我们把这六个选项叫做“选项菜单”

      ◆子菜单

      通讯录中选项菜单的最后一个一般情况下显示的是“更多”,单击之后有出现了一些菜单,我们把“更多”叫做“子菜单”。不支持图标显示,不能嵌套子菜单

      ◆上下文菜单

         当用户单击元素超过两秒的时间,会自动弹出的菜单,叫做“上下文菜单”。不支持图标显示

         2:添加菜单项常用方式

         (1)通过MenuInflater(菜单填充器)把在XML文件中定义好的样式应用到菜单上

         (2)通过Java代码的add方法逐个添加菜单项

         3:处理点击事件常用方式

         调用onOptionsItemSelected(MenuItem)和onContextItemSelected(MenuItem)方法。

         三:OptionsMenu--选项菜单

         1:样式

         最多只能显示6个菜单项,只支持文字与图标,多余6个的菜单项时,第六个会以“更多”的菜单项调出,但是他们不支持图标,只支持文字。

         2:创建

         通过在Activity中重写onCreateOptionsMenu(Menu menu)方法,并调用参数的add方法来添加菜单项,其中的参数解释如下:

                 add(groupId, itemId, order, titleRes)

         ①groupId:菜单项所属组ID,取值参照API;②itemId:菜单项ID;③order:菜单项的组织方式,取值参照API;④titleRes:显示在菜单项上的文字

         3:添加菜单项具体实现

         ◆小于等于六个时


      1.public boolean onCreateOptionsMenu(Menu menu) {
      2.    menu.add(Menu.NONE, 1, Menu.NONE, "Item1");
      3.    menu.add(Menu.NONE, 2, Menu.NONE, "Item2");
      4.    menu.add(Menu.NONE, 3, Menu.NONE, "Item3");
      5.    menu.add(Menu.NONE, 4, Menu.NONE, "Item4");
      6.    menu.add(Menu.NONE, 5, Menu.NONE, "Item5");   
      7.    return true;
      8.}

            结果如图所示

         ◆大于六个时


      01.public boolean onCreateOptionsMenu(Menu menu) {
      02.        menu.add(Menu.NONE, 1, Menu.NONE, "Item1");
      03.        menu.add(Menu.NONE, 2, Menu.NONE, "Item2");
      04.        menu.add(Menu.NONE, 3, Menu.NONE, "Item3");
      05.        menu.add(Menu.NONE, 4, Menu.NONE, "Item4");
      06.        menu.add(Menu.NONE, 5, Menu.NONE, "Item5");
      07.        menu.add(Menu.NONE, 6, Menu.NONE, "Item6");
      08.        menu.add(Menu.NONE, 7, Menu.NONE, "Item7");
      09.        menu.add(Menu.NONE, 8, Menu.NONE, "Item8");   
      10.        return true;
      11.    }

      结果如图所示,其余三个(6,7,8)在More后面

         5:响应单击事件:

         重写onOptionsItemSelected(MenuItem)方法,根据getItemId()方法得到被单击的菜单ID,从而相应不同的事件。


      01.@Override
      02.public boolean onOptionsItemSelected(MenuItem item) {
      03.    switch (item.getItemId()) {
      04.    case 1:
      05.        System.out.println("您点击的是菜单项1");
      06.        break;
      07.    case 2:
      08.        System.out.println("您点击的是菜单项2");
      09.        break;
      10.    }
      11.    return super.onOptionsItemSelected(item);
      12.}

        点击菜单项一之后,结果如图所示,在控制台输出

       

      1.08-22 12:20:01.577: I/System.out(450): 您点击的是菜单项1

         四:SubMenu--子菜单

         1:样式

         用户单击菜单项之后可以弹出的菜单的菜单(”更多“)。不能再有子菜单,也不支持图标显示。

         2:属性

         (1)setIcon:设置含有子菜单的菜单项的图标

         (2)setHeaderTitle:设置弹出菜单的标题

         (3)setheaderIcon:设置弹出菜单的图标

         3:创建

         (1)重写onCreateOptionsMenu(Menu menu)方法

         (2)在主菜单的基础上,调用addSubMenu方法,将含有子菜单的菜单项添加。

         (3)定义弹出子菜单样式

         (4)添加子菜单的菜单项

         4:具体实现:单击“更多“菜单项时弹出子菜单


      01.public boolean onCreateOptionsMenu(Menu menu) {
      02.        menu.add(Menu.NONE, 1, Menu.NONE, "Item1");
      03.        menu.add(Menu.NONE, 2, Menu.NONE, "Item2");
      04.        menu.add(Menu.NONE, 3, Menu.NONE, "Item3");
      05.        menu.add(Menu.NONE, 4, Menu.NONE, "Item4");
      06.        menu.add(Menu.NONE, 5, Menu.NONE, "Item5");
      07.                                                                                                                                                             
      08.        SubMenu submenu = menu.addSubMenu(Menu.NONE, 6, Menu.NONE, "Item6");
      09.                                                                                                                                                             
      10.        submenu.setHeaderIcon(R.drawable.ic_launcher);
      11.        submenu.setIcon(R.drawable.ic_launcher);
      12.        submenu.setHeaderTitle("我是弹出的菜单");
      13.                                                                                                                                                             
      14.        submenu.add(Menu.NONE, 7, Menu.NONE, "Item6");
      15.        submenu.add(Menu.NONE, 8, Menu.NONE, "Item7");
      16.        submenu.add(Menu.NONE, 9, Menu.NONE, "Item8");    
      17.        return true;
      18.    }

         结果如图所示

         5:响应单击事件同上。

         五:ContextMenu--上下文菜单

         1:样式

         用户单击元素超过两秒之后弹出的菜单。

         2:属性同上

         3:创建同上,只是重写的是onContextItemSelected(MenuItem)方法。

         六:综合运用

         功能:长按主界面按钮,弹出一个上下文菜单,其中设置一项为子菜单,单击之后弹出菜单,再单击一项时,短时间显示提示信息。


      01.public class contextMenu extends Activity{
      02.    private Button button;//声明按钮
      03.    @Override
      04.    protected void onCreate(Bundle savedInstanceState) {
      05.        super.onCreate(savedInstanceState);
      06.        setContentView(R.layout.contextmenu);
      07.        //根据Id查找控件
      08.        button  =(Button) findViewById(R.id.button1);
      09.        //注册,让Button会启动上下文菜单
      10.        registerForContextMenu(button);
      11.    }
      12.    @Override
      13.    public void onCreateContextMenu(ContextMenu menu, View v,
      14.            ContextMenuInfo menuInfo) {
      15.        //为上下文菜单添加菜单项
      16.        menu.add(Menu.NONE, 1, Menu.NONE, "Item1");
      17.        menu.add(Menu.NONE, 2, Menu.NONE, "Item2");
      18.        menu.add(Menu.NONE, 3, Menu.NONE, "Item3");
      19.        menu.add(Menu.NONE, 4, Menu.NONE, "Item4");
      20.        menu.add(Menu.NONE, 5, Menu.NONE, "Item5");
      21.        //菜单项六为子菜单,单击之后出现7,8,9
      22.        SubMenu submenu = menu.addSubMenu(Menu.NONE, 6, Menu.NONE, "Item6");
      23.                                                                                    
      24.        submenu.setHeaderIcon(R.drawable.ic_launcher);
      25.        submenu.setIcon(R.drawable.ic_launcher);
      26.        submenu.setHeaderTitle("我是弹出的菜单");
      27.                                                                                    
      28.        submenu.add(Menu.NONE, 7, Menu.NONE, "Item7");
      29.        submenu.add(Menu.NONE, 8, Menu.NONE, "Item8");
      30.        submenu.add(Menu.NONE, 9, Menu.NONE, "Item9");    
      31.        super.onCreateContextMenu(menu, v, menuInfo);
      32.    }
      33.    //添加单击事件
      34.    @Override
      35.    public boolean onContextItemSelected(MenuItem item) {
      36.        switch (item.getItemId()) {
      37.        case 8:
      38.            Toast.makeText(contextMenu.this, "您单击了菜单项8", Toast.LENGTH_LONG).show();       
      39.            break;
      40.        }
      41.        return super.onContextItemSelected(item);
      42.    }
      43.}

         结果:

       

         Android中的控件使用方法也许有些多,勤练习呗。。。又没有捷径?自己蹚道儿吧。。。你说呢?

posted @ 2015-05-28 16:07  xiarily  阅读(235)  评论(0)    收藏  举报