メニュー
このセクションの紹介:
この章では 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) 使用例:
レンダリングの実行:
コード実装:
MainActivity.java:
//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以下のバージョンでは、現段階ではほとんどの機種にメニューキーが搭載されているため、 この段階で、メニュー ボタンをクリックしてメニューをポップアップします:
Android 3.0 以降では、これは 3.0 で導入された ActionBar の設定メニューです: バージョン 5.0 以降では、ツールバーでクリックすると、オーバーフロー メニュー スタイルが表示されます
さらに、XML を通じてメニューを定義するために、簡単なリファレンス コードを投稿します:
<?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"</menu> ;
その他は自分でドキュメントを確認してください~
2.ContextMenu (コンテキストメニュー)
最初にViewを長押しした後に表示されるメニューについては、このViewのコンテキストメニューを登録する必要があると言いました!
1) ContextMenu の使用方法?
回答: プロセスは次のとおりです:
- ステップ 1: onCreateContextMenu() メソッドを書き換えます
- ステップ 2: ビュー コンポーネントのコンテキスト メニューを登録し、 registerForContextMenu() メソッドとパラメータを使用しますis View
- ステップ 3: onContextItemSelected() メソッドを書き換えて、メニュー項目のイベント リスナーを指定します
上記の OptionMenu では、Java コード メソッドを使用してメニュー項目の追加を完了します。 XMLファイルを使用する さらに、Java コードを使用してメニューを生成するか、XML を使用してメニューを生成するかについても、 後者を使用してメニューを定義することをお勧めします。これにより、Java コードのコード肥大化が軽減され、毎回コード割り当てを使用する必要がなくなります。 ID を変更する場合は、XML ファイルを変更してメニューのコンテンツを変更するだけで済みます。これにより、ある程度の分離が向上します。 低結合、高凝集ですね~
2) 使用例:
レンダリングの実行:
実装コード:
まずオプションメニューのメニューXMLファイルを書きましょう:
menu_context.xml:
<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.green:
s; ExtColor (color.green );
Case R.id.red:
TV_Context.SettextColor (color.red);
}}}}} }
わかりました、とても簡単です~switch(v.getId) を使用すると、複数のビューのコンテキストを設定できます~ また、後述するサブメニューと同様に、コンテキスト メニューにはアイコンを表示できません。
3.SubMenu(サブメニュー)
いわゆるサブメニューは、<**item**> 内にネストされた <**menu**> の単なる別のレイヤーです。 renderings
実装コード:
サブメニューの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;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 リソースから取得できます。これを使用する簡単な例を書いてみましょう~
使用例:
レンダリングの実行:
実装コード:
メニュー リソース ファイル: menu_pop.xml:
<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:
@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 コントロールについても説明します。他のプロパティについてはドキュメントを参照してください。 ドキュメンテーションは最高の先生です〜 さて、以上です、ありがとうございます。ところで、今日は建国記念日です。皆さんの幸せな建国記念日をお祈りします。