Android Studio初学笔记-Day22-ToolBar

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


<<:  Day22 春天下的第一场雨-蚂蚁上树

>>:  D23 - 「不断线的侏罗纪」:有一只小恐龙在跑步

从 JavaScript 角度学 Python(21) - Requests

前言 在 JavaScript 中 AJAX 是一个非常重要的基础功,毕竟现在很流行前後端分离,因此...

[从0到1] C#小乳牛 练成基础程序逻辑 Day 18 - do while回圈 作用域 break + continue

Just do it! 先做就对了| 作用域-换个位置换颗脑袋 | 中断回圈break | con...

Day5 该如何在终端机下指令与命令

大家好,我是乌木白,今天来介绍一下大家该入何在终端机使用。 什麽是终端机? 终端机(Termina...

[Day 17 - npm] 哆啦A梦有百宝袋,我有套件管理工具npm

前端的社群发展愈来愈蓬勃,延伸出各式各样基於 HTML、CSS、JS 的开源套件,像是 Bootst...

[Day 24] DOM Array Methods 实作练习

前言 当 JS 学了将基本语法练习、观念都学过之後,就开始学找实作练习,透过看老师的作法慢慢拆解每个...