メニュー


このセクションの紹介:

この章では Android のメニュー (メニュー) について説明します。Android のメニューは次のとおりです:

  • OptionMenu: オプション メニュー、Android で最も一般的なメニュー、メニューを使用します。
  • SubMenuを呼び出すキー: サブメニュー Android でサブメニューをクリックすると、サブメニュー項目を示すフローティング ボックスがポップアップ表示されます。 サブメニューはネストをサポートしていません。つまり、他のサブメニューを含めることはできません
  • ContextMenu: コンテキスト メニュー、ビュー コンポーネントを長押しした後に表示されるメニュー、コンポーネントはコンテキスト メニューを登録する必要があります このセクションでは、Yiyi でこれらのメニューを使用する方法を学びましょう~ PS: 公式ドキュメント: menus

1.OptionMenu (オプションメニュー)


1) OptionMenu の使用方法?

答え: とても簡単で、2 つのメソッドを書き換えるだけです。実際、これら 2 つのメソッドはプロジェクトの作成時に自動的に生成されます。 それらは次のとおりです:

  • public boolean onCreateOptionsMenu(Menu menu): OptionMenuを呼び出し、ここでメニューの初期化を完了します
  • public boolean onOptionsItemSelected(MenuItem item): メニュー項目が選択されるとトリガーされ、イベント処理がここで完了します

もちろん、オーバーライドできる上記の 2 つのメソッドに加えて、次の 3 つのメソッドもオーバーライドできます:

  • public void onOptionsMenuClosed(Menu menu): このメソッドはメニューが閉じられたときに呼び出されます
  • public boolean onPrepareOptionsMenu( Menu menu): このメソッドは、オプション メニューが表示される前に呼び出されます。 ここでメニューを調整できます (メニュー リストを動的にロードします)
  • public boolean onMenuOpened(int featureId, Menu menu): このメソッドは、オプション メニューが開いた後に呼び出されます

メニュー、1 つ目は、メニュー XML ファイルを直接記述して、次の呼び出しを行うことです: getMenuInflater().inflate(R.menu.menu_main, menu); メニューをロードする または、コード、onCreateOptionsMenu のパラメータ メニューを通じて動的に追加し、add メソッドを呼び出して追加します。 メニュー、追加(グループ番号、ID、ソート番号、メニュー項目のタイトル)、ソート番号が追加順にソートされている場合は0を記入するだけです!


2) 使用例:

レンダリングの実行:

1.gif

コード実装:

MainActivity.java:

public class MainActivity extends AppCompatActivity {

//1.定义異なる颜色の菜单项的标识:
final private int RED = 110;
final private int GREEN = 111;
final private int BLUE = 112;
final private int YELLOW = 113;
final private int GRAY= 114;
final private int CYAN= 115;
final private int BLACK= 116;

private TextView tv_test;

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

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflateメニュー; これにより、アクションバーが存在する場合、アクションバーに項目が追加されます。
menu.add(1,RED,4,"红色");
menu.add(1,GREEN,2,"绿色");
menu.add(1 ,BLUE,3,"蓝色");
menu.add(1,YELLOW,1,"黄色");
menu.add(1,GRAY,5," グレー");
menu.add(1, CYAN,6,"蓝绿色");
menu.add(1,BLACK,7,"黑色");
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// アクションを処理するバー項目はここをクリックしてください。 アクション バーは、AndroidManifest.xml で親アクティビティを指定すると、ホーム/上ボタンのクリックを自動的に処理します
//        int id = item.getItemId();
switch (id){
case RED:
tv_test.setTextColor(Color.RED);
break;
case GREEN:
tv_test.setTextColor(Color.GREEN);
break;
case BLUE:
tv_test.setTextColor(Color.BLUE);
break;
case YELLOW:
tv_test.setTextColor(Color.YELLOW);
break;
case GRAY:
tv_test.setTextColor(Color.GRAY);
break;
case CYAN:
tv_test.setTextColor(Color.CYAN);
break;
case BLACK:
tv_ test.setTextColor(Color.BLACK);
break;
}
return super.onOptionsItemSelected(item);
}
}

コード分析:

上記のコードは、Android 5.0 の OptionMenu (オプション メニュー) にメニューを動的に追加する方法を示しています。 そしてイベント処理では、IDに基づいてユーザーがどの項目をクリックしたかを判断し、対応する操作を実行します。 さらに、オプション メニューは 3 つの移行段階を経ていることに注意してください。 Android 2.3.x以下のバージョンでは、現段階ではほとんどの機種にメニューキーが搭載されているため、 この段階で、メニュー ボタンをクリックしてメニューをポップアップします:

2.png

Android 3.0 以降では、これは 3.0 で導入された ActionBar の設定メニューです: バージョン 5.0 以降では、ツールバーでクリックすると、オーバーフロー メニュー スタイルが表示されます

3.png

さらに、XML を通じてメニューを定義するために、簡単なリファレンス コードを投稿します:

4.png<?xml version="1.0" エンコード=" utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@+id/new_game "

android:icon="@drawable/ic_new_game"
android:icon="@drawable/ic_new_game" icon ="@drawable/ic_help"
android:title="@string/help" />
</menu> ;

その他は自分でドキュメントを確認してください~


2.ContextMenu (コンテキストメニュー)

最初にViewを長押しした後に表示されるメニューについては、このViewのコンテキストメニューを登録する必要があると言いました!


1) ContextMenu の使用方法?

回答: プロセスは次のとおりです:

  • ステップ 1: onCreateContextMenu() メソッドを書き換えます
  • ステップ 2: ビュー コンポーネントのコンテキスト メニューを登録し、 registerForContextMenu() メソッドとパラメータを使用しますis View
  • ステップ 3: onContextItemSelected() メソッドを書き換えて、メニュー項目のイベント リスナーを指定します

上記の OptionMenu では、Java コード メソッドを使用してメニュー項目の追加を完了します。 XMLファイルを使用する さらに、Java コードを使用してメニューを生成するか、XML を使用してメニューを生成するかについても、 後者を使用してメニューを定義することをお勧めします。これにより、Java コードのコード肥大化が軽減され、毎回コード割り当てを使用する必要がなくなります。 ID を変更する場合は、XML ファイルを変更してメニューのコンテンツを変更するだけで済みます。これにより、ある程度の分離が向上します。 低結合、高凝集ですね~


2) 使用例:

レンダリングの実行:

5.gif

実装コード:

まずオプションメニューのメニューXMLファイルを書きましょう:

menu_context.xml

<?xml version="1.0"coding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/ android">
<!-- ラジオ ボタンのセットを定義します -->
<!-- checkableBehavior には 3 つのオプションの値があります: single はラジオ選択に設定され、all は複数選択に設定され、none一般的なオプションです -->
items " android:title="@string/font_green"/>
/>
</group>
</menu>

次に、オプションメニューに基づいてTextViewを追加し、次のものを追加します。TextViewTV_Context; Contextmenu.contextmenuinfo menuinfo){

menuinflater = new Menuinflater.inflate(r.menu.menu_context、menu); @@@@Override

Public Boolean ContextItemselected (menuitem item) {i switch (item.getIDID ()) {
case r.id.blue:
TV_ContextColor (color.blue)
Case R.id.green:
s; ExtColor (color.green );
Case R.id.red:
TV_Context.SettextColor (color.red);



}}}}} }

わかりました、とても簡単です~switch(v.getId) を使用すると、複数のビューのコンテキストを設定できます~ また、後述するサブメニューと同様に、コンテキスト メニューにはアイコンを表示できません。


3.SubMenu(サブメニュー)

いわゆるサブメニューは、<**item**> 内にネストされた <**menu**> の単なる別のレイヤーです。 renderings

実装コード:6.gif

サブメニューのMenuファイルを記述します:menu_sub.xml:

<?xml version="1.0" encoding="utf-8" ?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@+id/submenu" android:title=" サブメニューの使用デモ〜 "&gt;

/&gt;
サブメニュー3"/&gt;
次に、上記のコンテキスト メニューの 2 つのメソッドの内容を変更し、次のコードを置き換えます:

Public Void OncreateContextMenu (ContextMenu Menu, View V,
ContextMenuinfo Menuinfo) Inflaater inflator = new MenuInflater(this);
inflator .inflate(r.menu.menu_sub、メニュー); R.id. 2:
case R.id.three:
.makeText(MainActivity.this,"サブメニュー 3 をクリックしました",Toast.LENGTH_SHORT).show();

とても簡単ですよね? さらに、Java コードでサブメニューを追加したい場合は、addSubMenu() を呼び出すことができます

例: SubMenu file = menu.addSubMenu("File"); file も必要です。メニュー項目を追加します!


4.PopupMenu (ポップアップメニュー)

PopupWindowと似たもので、指定したViewの下に簡単にポップアップメニューを表示できます。 彼のメニュー オプションは、Menu リソースから取得できます。これを使用する簡単な例を書いてみましょう~

使用例:

レンダリングの実行:

7.gif

実装コード:

メニュー リソース ファイル: menu_pop.xml:

<?xml version="1.0" encoder="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android ">
<item android:id="@+id/lpig" android:title="こぶた" />
<item android:id="@+id/bpig" android :title="ビッグ豚" />
</menu>

レイアウトにボタンを追加し、クリック イベントを追加します:

MainActivity.java:

btn_show_menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popup = new Popup Menu(MainActivity.this,btn_show_menu);
popup.getMenuInflater().inflate(R. menu.menu_pop, popup.getMenu());
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id .lpig:
Toast.makeText(MainActivity.this,"你点了小猪~",
Toast.LENGTH_SHORT).show();
break;
case R.id.bpig:
Toast.makeText(MainActivity.これ,"你点了大猪~",
Toast.LENGTH_SHORT).show();
休憩
});


5. サンプルコードのダウンロード

MenuDemo1.zip
このセクションの概要:


さて、このセクションでは、Android の 3 つのメニュー、オプション メニュー、コンテキスト メニュー、サブメニューについて説明します。 ここでは、PopupMenu コントロールについても説明します。他のプロパティについてはドキュメントを参照してください。 ドキュメンテーションは最高の先生です〜 さて、以上です、ありがとうございます。ところで、今日は建国記念日です。皆さんの幸せな建国記念日をお祈りします。