您好,登錄后才能下訂單哦!
Android中怎么實現選項菜單子菜單,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
1.首先在資源文件夾的menu下創建菜單xml
menu_main.xml
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menuFont" android:title="字體大小"> <menu> <group android:id="@+id/groupFont" android:checkableBehavior="none"> <item android:id="@+id/font_10" android:title="10" /> <item android:id="@+id/font_12" android:title="12" /> <item android:id="@+id/font_14" android:title="14" /> <item android:id="@+id/font_16" android:title="16" /> <item android:id="@+id/font_18" android:title="18" /> </group> </menu> </item> <item android:id="@+id/menuColor" android:icon="@mipmap/ic_launcher" android:title="字體顏色"> <menu> <group android:id="@+id/groupColor" android:checkableBehavior="none"> <item android:id="@+id/red" android:title="紅色" /> <item android:id="@+id/blue" android:title="藍色" /> <item android:id="@+id/green" android:title="綠色" /> </group> </menu> </item></menu>
對于上面的xml文件中:
‘<'item …/>元素:定義菜單項。 ‘<'group…/>子元素:將多個'<'item…/>定義的菜單項包裝成一個菜單組,'<'gruop…/> 子元素用于控制整組菜單的行為,該元素可指定如下的常用屬性:
checkableBehavior:指定該組菜單的選擇行為。可以指定為none(不可選)、all(多選)和single(單選)三個值menuCategory:對菜單進行分類,指定菜單的優先級。有效值為container、system、secondary和alternativevisible:指定該組件菜單是否可見。enable:指定該組菜單是否可用。
一般'<'item .../>元素用于定義菜單項,'<'item .../>元素又可包含'<'menu.../>元素,位于'<'item.../>元素內部的'<'menu.../>就是他的子菜單。
對于'<'item…/>元素可用指定如下常用屬性:
android:id: 為菜單項指定一個唯一的標識 android:title: 指定菜單項的標題 android:icon: 指定菜單項的圖標 android:alphabeticShortcut: 為菜單項指定字符快捷鍵 android:numericShortcut: 為菜單項指定數字快捷鍵 android:checkable: 設置該次啊單項是否可選 android:checked: 設置該菜單項是否已選中 android:visible: 設置該菜單項是否可見 android:enable: 設置該菜單項是否可用
2.設置與菜單項關聯的Activity,在activity中重寫onCreateOptionsMenu(Menu menu)、 如果需要菜單項的監聽事件,則需要重寫
onOptionsItemSelected(MenuItem item)
MainActivity.java
public class MainActivity extends AppCompatActivity {private EditText mEdt;private TextView mTv;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mEdt = (EditText) findViewById(R.id.mEdt); mTv = (TextView) findViewById(R.id.mInput);}/** * 通過該方法添加菜單項或子菜單項 * @param menu * @return */@Overridepublic boolean onCreateOptionsMenu(Menu menu) { //方式一添加菜單布局 MenuInflater inflater = new MenuInflater(this); //將解析到的布局添加到menu中 inflater.inflate(R.menu.menu_main, menu); //方式二添加菜單布局// getMenuInflater().inflate(R.menu.menu_main,menu); return super.onCreateOptionsMenu(menu);}/** * 設置菜單項的點擊事件 * @param item * @return */@Overridepublic boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menuColor: Toast.makeText(this, "你選擇了修改顏色", Toast.LENGTH_SHORT).show(); break; case R.id.menuFont: Toast.makeText(this, "你選擇了修改字體", Toast.LENGTH_SHORT).show(); break; } return super.onOptionsItemSelected(item); }}
3.開始實現功能了,這里我只貼上功能實現的方法:onOptionsItemSelected(MenuItem item)
@Overridepublic boolean onOptionsItemSelected(MenuItem item) { //先判斷點擊的是哪個id switch (item.getItemId()) { case R.id.font_10: mEdt.setTextSize(10 * 2); break; case R.id.font_12: mEdt.setTextSize(12 * 2); break; case R.id.font_14: mEdt.setTextSize(14 * 2); break; case R.id.font_16: mEdt.setTextSize(16 * 2); break; case R.id.font_18: mEdt.setTextSize(18 * 2); break; case R.id.blue: mEdt.setTextColor(Color.BLUE); break; case R.id.red: mEdt.setTextColor(Color.RED); break; case R.id.green: mEdt.setTextColor(Color.GREEN); break; } return super.onOptionsItemSelected(item);}
看完上述內容,你們掌握Android中怎么實現選項菜單子菜單的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。