1. 程式人生 > 程式設計 >Android實現選項選單子選單

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);
}

執行結果:

簡單的選單佈局就這些了,對於選單還有另一種方法,那就是上下文選單,有關上下文選單,下次介紹<

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。