iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 17
0
自我挑戰組

Android初學筆記系列 第 17

Day 17 - 建立選單(Menu)

Menu是位在畫面右上角的選單,當您需要提供連結或功能讓使用者點選,而又不想占用主畫面的空間時,Menu是個不錯的選擇,使用起來也很簡單只要寫一點點程式

建立Menu項目

在res上按右鍵,新增一個menu資料夾
http://ithelp.ithome.com.tw/upload/images/20170101/20103849cDcQ6l4dei.png

http://ithelp.ithome.com.tw/upload/images/20170101/20103849rafwrKplNg.png

再對menu資料夾按右鍵,新增一個menu_main
http://ithelp.ithome.com.tw/upload/images/20170101/20103849R1houHMuce.png

menu_main.xml就是設置Menu項目的地方,假設我們要三個項目:設定、使用說明、關於

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/action_settings"
        android:title="設定"
        android:icon="@drawable/ic_settings"
        app:showAsAction="ifRoom"/>

    <item
        android:id="@+id/action_help"
        android:title="使用說明"
        app:showAsAction="never"/>

    <item
        android:id="@+id/action_about"
        android:title="關於"
        app:showAsAction="never"/>

</menu>

app:showAsAction表示項目要顯示或摺疊收起,「設定」我們用ifRoom表示只要畫面有空間就顯示,因此我們也給它一個Icon這樣顯示時比較好看,另外兩個項目用never讓它們摺疊在一起


與Activity連結

在Activity中用onCreateOptionsMenu建立選單,並用onOptionItemSelected來控制點擊事件就完成了

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 略..
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // 設置要用哪個menu檔做為選單
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        // 取得點選項目的id
        int id = item.getItemId();

        // 依照id判斷點了哪個項目並做相應事件
        if (id == R.id.action_settings) {
            // 按下「設定」要做的事
            Toast.makeText(this, "設定", Toast.LENGTH_SHORT).show();
            return true;
        }
        else if (id == R.id.action_help) {
            // 按下「使用說明」要做的事
            Toast.makeText(this, "使用說明", Toast.LENGTH_SHORT).show();
            return true;
        }
        else if (id == R.id.action_about) {
            // 按下「關於」要做的事
            Toast.makeText(this, "關於", Toast.LENGTH_SHORT).show();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

}

執行結果
http://ithelp.ithome.com.tw/upload/images/20170101/20103849S4I1o78XWw.png

http://ithelp.ithome.com.tw/upload/images/20170101/201038490ppl3YOeOU.png


上一篇
Day 16 - Design Support Library
下一篇
Day 18 - 側滑選單DrawerLayout
系列文
Android初學筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言