Android實現選項選單子選單
Android之選項選單和子選單學習筆記,供大家參考,具體內容如下
選單簡介:
選單在桌面應用中使用十分廣泛,幾乎所有的桌面應用都有選單。但是隨著手機的發展,對於手機桌面選單的使用減少了很多,一般來說我們把選單都放到應用中是實現,桌面應用的選單與手機應用的選單的不同之處就是,桌面選單一般可見,而手機不可見,通常需要使用者按下手機上的MENU鍵時,才會彈出選單的相關應用,這裡簡單的來說下菜的簡單使用情況,通過一個小案例來講解。
一般選單的建立有兩種方式,一種是在Java程式碼中建立,一種是在XML中建立,本次主要講解XML中建立選單的案例,因為一般推薦使用的都是XML方式來建立選單,相比Java程式碼,他更便於維護,可擴充套件性強,耦合度底。
案例實現,使用者輸入文字,可以通過選單選擇字型的大小,字型的顏色等
實現步驟:
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和alternative
- visible:指定該元件選單是否可見。
- 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; @Override protected 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 */ @Override public 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 */ @Override public 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)
@Override public 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); }
執行結果:
簡單的選單佈局就這些了,對於選單還有另一種方法,那就是上下文選單,有關上下文選單,下次介紹<
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。