欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android入門(mén)之Menu組件的使用教程詳解

 更新時(shí)間:2022年11月25日 08:47:02   作者:TGITCIC  
這篇文章主要為大家詳細(xì)介紹了Android中常用的幾個(gè)Menu組件的使用教程,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的可以了解一下

簡(jiǎn)介

Android有不同的菜單:

  • 系統(tǒng)菜單
  • 彈出菜單(可自定義樣式)
  • Context Menu;
  • 子菜單;

菜單的使用和我們前面說(shuō)的AlertDialog很像。它可以支持自定義樣式、也可以對(duì)菜單的點(diǎn)擊事件進(jìn)行綁定。

Android里有幾個(gè)MainActivity事件可以覆蓋,其中有以下幾個(gè)事件就是用于處理Menu的。

  • onCreateOptionsMenu(Menu menu),在這個(gè)方法里如果你使用menu.add就可以實(shí)現(xiàn)在Android的手機(jī)里右上角的...圖標(biāo)點(diǎn)擊出現(xiàn)系統(tǒng)菜單的效果;
  • onOptionsItemSelected(MenuItem item),這個(gè)方法里可以進(jìn)行每個(gè)系統(tǒng)菜單項(xiàng)點(diǎn)擊的處理事件;
  • onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) ,這個(gè)是用來(lái)創(chuàng)建ContextMenu的,即這個(gè)菜單可以綁定在一個(gè)組件上,比如說(shuō)按一下一個(gè)組件,對(duì)于這個(gè)組件的菜單就會(huì)被彈出。但是它要啟作用必須在程序運(yùn)行開(kāi)始時(shí)調(diào)用一下Activity里的自帶方法:registerForContextMenu(View view);來(lái)指定,ContextMenu綁定在哪個(gè)組件的身上;
  • onContextItemSelected(MenuItem item),相應(yīng)的對(duì)于ContextMenu的每一個(gè)item的點(diǎn)擊處理方法,用戶可以自定義和覆蓋里面的邏輯;

課程目標(biāo)

  • 做一個(gè)可以改變屏幕中間TextView字體顏色的系統(tǒng)菜單;
  • 點(diǎn)一下按鈕彈出一個(gè)PopMenu;
  • 對(duì)于一個(gè)TextView綁定一個(gè)ContextMenu;

代碼

前端代碼

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<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"
    tools:context=".MainActivity">
    <TextView
        android:id="@+id/viewContext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:text="長(zhǎng)按出context menu"
        android:textSize="18sp" />
 
    <TextView
        android:id="@+id/textColor"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="選擇菜單改變顏色"
        android:textSize="18sp" />
 
 
    <Button
        android:id="@+id/btnShowMenu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textColor"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp"
        android:text="展示彈出菜單" />
 
 
</RelativeLayout>

系統(tǒng)菜單

前端代碼

不需要

后端代碼

MainActivity.java

系統(tǒng)菜單涉及到兩個(gè)方法的覆蓋,因此只要在這兩個(gè)方法把系統(tǒng)菜單設(shè)上,同時(shí)對(duì)系統(tǒng)菜單的“選擇”事件做出自定義即可,在此我們通過(guò)系統(tǒng)菜單改變屏幕中一行字的字體顏色

//1.定義不同顏色的菜單項(xiàng)的標(biāo)識(shí):
  private final int RED = 101;
  private final int GREEN = 102;
  private final int BLUE = 103;
  private final int YELLOW = 104;
  private final int GRAY = 105;
  private final int CYAN = 106;
  private final int BLACK = 107;
@Override
 public boolean onCreateOptionsMenu(Menu menu) {
     // Inflate the menu; this adds items to the action bar if it is present.
     menu.add(1, RED, 4, "紅色");
     menu.add(1, GREEN, 2, "綠色");
     menu.add(1, BLUE, 3, "藍(lán)色");
     menu.add(1, YELLOW, 1, "黃色");
     menu.add(1, GRAY, 5, "灰色");
     menu.add(1, CYAN, 6, "藍(lán)綠色");
     menu.add(1, BLACK, 7, "黑色");
     return true;
 }
 
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
     int id = item.getItemId();
     switch (id) {
         case RED:
             textColor.setTextColor(Color.RED);
             break;
         case GREEN:
             textColor.setTextColor(Color.GREEN);
             break;
         case BLUE:
             textColor.setTextColor(Color.BLUE);
             break;
         case YELLOW:
             textColor.setTextColor(Color.YELLOW);
             break;
         case GRAY:
             textColor.setTextColor(Color.GRAY);
             break;
         case CYAN:
             textColor.setTextColor(Color.CYAN);
             break;
         case BLACK:
             textColor.setTextColor(Color.BLACK);
             break;
     }
     return super.onOptionsItemSelected(item);
 }

彈出菜單

前端代碼

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/mcat" android:title="一只喵" />
    <item android:id="@+id/mdog" android:title="一只汪" />
</menu>

后端代碼

   btnShowMenu.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            PopupMenu popup = new PopupMenu(MainActivity.this,btnShowMenu);
            popup.getMenuInflater().inflate(R.menu.pop_menu, popup.getMenu());
            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    switch (item.getItemId()){
                        case R.id.mcat:
                            Toast.makeText(MainActivity.this,"你輕拍了一下喵",
                                    Toast.LENGTH_SHORT).show();
                            break;
                        case R.id.mdog:
                            Toast.makeText(MainActivity.this,"你輕拍了一下汪",
                                    Toast.LENGTH_SHORT).show();
                            break;
                    }
                    return true;
                }
            });
            popup.show();
        }
    });
}

ContextMenu

前端

context_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="none">
        <item android:id="@+id/blue" android:title="@string/font_blue"/>
        <item android:id="@+id/green" android:title="@string/font_green"/>
        <item android:id="@+id/red" android:title="@string/font_red"/>
    </group>
</menu>

后端

我們可以看到這個(gè)ContextMenu是綁定在一個(gè)TextView上的。

viewContext=(TextView)findViewById(R.id.viewContext);
registerForContextMenu(viewContext);
 
   //重寫(xiě)上下文菜單的創(chuàng)建方法
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenu.ContextMenuInfo menuInfo) {
        MenuInflater inflator = new MenuInflater(this);
        inflator.inflate(R.menu.context_menu, menu);
        super.onCreateContextMenu(menu, v, menuInfo);
    }
    //上下文菜單被點(diǎn)擊是觸發(fā)該方法
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.blue:
                viewContext.setTextColor(Color.BLUE);
                break;
            case R.id.green:
                viewContext.setTextColor(Color.GREEN);
                break;
            case R.id.red:
                viewContext.setTextColor(Color.RED);
                break;
        }
        return true;
    }
}

到此這篇關(guān)于Android入門(mén)之Menu組件的使用教程詳解的文章就介紹到這了,更多相關(guān)Android Menu組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android自定義TabLayout效果

    Android自定義TabLayout效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義TabLayout效果的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Android Fragment+FragmentTabHost組件實(shí)現(xiàn)常見(jiàn)主頁(yè)面(仿微信新浪)

    Android Fragment+FragmentTabHost組件實(shí)現(xiàn)常見(jiàn)主頁(yè)面(仿微信新浪)

    本文主要介紹Fragment+FragmentTabHost組件實(shí)現(xiàn)常見(jiàn)主頁(yè)面,這里整理了詳細(xì)資料及簡(jiǎn)單示例代碼,有興趣的小伙伴可以參考下
    2016-09-09
  • Android實(shí)現(xiàn)下載m3u8視頻文件問(wèn)題解決

    Android實(shí)現(xiàn)下載m3u8視頻文件問(wèn)題解決

    這篇文章主要介紹了Android實(shí)現(xiàn)下載m3u8視頻文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-01-01
  • Android中比較兩個(gè)圖片是否一致的問(wèn)題

    Android中比較兩個(gè)圖片是否一致的問(wèn)題

    這篇文章主要介紹了Android中比較兩個(gè)圖片是否一致的問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Android下hook點(diǎn)擊事件的示例

    Android下hook點(diǎn)擊事件的示例

    這篇文章主要介紹了Android下hook點(diǎn)擊事件的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Android制作微信添加多個(gè)圖片放大圖片功能

    Android制作微信添加多個(gè)圖片放大圖片功能

    這篇文章主要介紹了Android制作微信添加多個(gè)圖片放大圖片功能,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-03-03
  • Android彈出窗口實(shí)現(xiàn)方法

    Android彈出窗口實(shí)現(xiàn)方法

    這篇文章主要介紹了Android彈出窗口實(shí)現(xiàn)方法,涉及Android TextView及鼠標(biāo)事件的響應(yīng)相關(guān)技巧,需要的朋友可以參考下
    2016-01-01
  • Android部分手機(jī)拍照后獲取的圖片被旋轉(zhuǎn)問(wèn)題的解決方法

    Android部分手機(jī)拍照后獲取的圖片被旋轉(zhuǎn)問(wèn)題的解決方法

    這篇文章主要為大家詳細(xì)介紹了Android部分手機(jī)拍照后獲取的圖片被旋轉(zhuǎn)問(wèn)題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Android Studio查看Android 5.x源碼的步驟詳解

    Android Studio查看Android 5.x源碼的步驟詳解

    Google為Android開(kāi)發(fā)者帶來(lái)Android Studio,用來(lái)取代Eclipse。從Android Studio出現(xiàn)起,整機(jī)開(kāi)發(fā)和Android源碼閱讀和編輯一定能用上它。這篇文章小編就帶大家學(xué)習(xí)下如何使用Android Studio查看Android 5.x源碼,有需要的可以參考借鑒。
    2016-09-09
  • Android模擬實(shí)現(xiàn)支付寶螞蟻森林效果

    Android模擬實(shí)現(xiàn)支付寶螞蟻森林效果

    這篇文章主要為大家詳細(xì)介紹了如何利用Android模擬實(shí)現(xiàn)支付寶中螞蟻森林的動(dòng)畫(huà)效果,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-09-09

最新評(píng)論