iT邦幫忙

2021 iThome 鐵人賽

DAY 22
0
Mobile Development

android studio 30天初學筆記系列 第 22

Android Studio初學筆記-Day22-ToolBar

  • 分享至 

  • xImage
  •  

Toolbar

Toolbar是對於頂端橫幅欄的設計,不同於之前介面設計的元件,對於整個程式來講可以說是幫忙修飾和完成一些額外功能的放置,很常見的像是在長處現在角落的三個點,常負責管理一些比較細微的瑣事,今天就來介紹如何用出這個小工具。
首先,需要先將原本的ActionBar拿掉,到style.xml的部分,我這裡是到res/value/theme的xml檔中找到,將設定ActionBar的部分改成如下。

<style name="Theme.ITToolbar" parent="Theme.AppCompat.Light.NoActionBar">
  • 在res中加入一資料夾menu 如圖
    https://ithelp.ithome.com.tw/upload/images/20210908/20139136b7J6y53Ewp.png
    https://ithelp.ithome.com.tw/upload/images/20210908/201391360Zw1xA9Wfx.png
    記得Resourse type也要改成menu
  • 接者在menu資料夾中加入一個xml檔,負責存放在Toolbar的資料,大致如下
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/setting"
        android:title="設定"
        android:icon="@drawable/setting"
        app:showAsAction="ifRoom"/>
    <item
        android:id="@+id/help"
        android:title="使用說明"
        app:showAsAction="never" />
    <item
        android:id="@+id/about"
        android:title="關於"
        app:showAsAction="never" />
</menu>

這裡可以選擇是否設計icon,如果沒有設定,則會顯示title的部分,不過如果在app:showAsAction=”never”的情況下就只會顯示title的文字。
app:showAsAction=””

  • ifRoom:如果ActionBar有空間,該項目放在ActionBar
  • never:項目不放在ActionBar,放在右側的選單中
  • always:項目一定放在ActionBar (不建議使用)

設定完後就能去寫將menu引入Toolbar的部分了

public class MainActivity extends AppCompatActivity {
    private Toolbar toolbar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        toolbar = (Toolbar) findViewById(R.id.toolbar);

        // 用toolbar做為APP的ActionBar
        setSupportActionBar(toolbar);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // 設置要用哪個menu檔做為選單
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;   //返回true表顯示
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // 取得點選項目的id
        int id = item.getItemId();

        // 依照id判斷點了哪個項目並做相應事件
        if (id == R.id.setting) {
            // 按下「設定」要做的事
            Toast.makeText(this, "設定", Toast.LENGTH_SHORT).show();
            return true;
        }
        else if (id == R.id.help) {
            // 按下「使用說明」要做的事
            Toast.makeText(this, "使用說明", Toast.LENGTH_SHORT).show();
            return true;
        }
        else if (id == R.id.about) {
            // 按下「關於」要做的事
            Toast.makeText(this, "關於", Toast.LENGTH_SHORT).show();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
  • 選擇要引用的Toolbar用setSupportActionBar(),因為setSupportActionBar()屬於AppCompatActivity的方法,所以可以直接在Activity中呼叫即可。
  • 透過public void onCreateOptionsMenu(Menu mene) 取得剛寫的menu.xml檔
  • 用public boolean onOptionsItemSelected(MenuItem item)來做被選擇項目的功能這裡就簡單用Toast顯示被選擇的項目。

成果

https://ithelp.ithome.com.tw/upload/images/20210908/20139136fS5T985SEo.png
https://ithelp.ithome.com.tw/upload/images/20210908/201391365X2QUa7E3s.png
今天Toolbar就講到這邊,謝謝大家~/images/emoticon/emoticon41.gif


上一篇
Android Studio初學筆記-Day21-AlertDialog(2)
下一篇
Android Studio初學筆記-Day23-Banner
系列文
android studio 30天初學筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言