Android UI Material Design交互设计(二)--Toolbar的基本使用与样式修改

Android UI Material Design交互设计(一)–BottomNavigationView底部菜单
Android UI Material Design交互设计(二)–Toolbar的基本使用与样式修改
Android UI Material Design交互设计(三)–SnackBar 详解
Android UI Material Design交互设计(四)–AppBarLayout 与Toolbar结合
Android UI Material Design交互设计(五)–CollapsingToolbarLayout 折叠布局
Android UI Material Design交互设计(六)–CoordinatorLayout之精髓Behavior 自定义Behavior

Toolbar 是在 Android 5.0 开始推出的一个 Material Design 风格的导航控件。作为替代ActionBar新的头部标题控件,他有什么优势呢: 更灵活的自定义属性

效果一:
在这里插入图片描述

实现一: 布局

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorAccent"
        app:navigationIcon="@drawable/icon_back"
        app:popupTheme="@style/OverflowMenuStyle"
        app:subtitleTextAppearance="@style/Theme.Toolbar.SubTitle"
        app:titleTextAppearance="@style/Theme.Toolbar.Title"/>

解释:设置属性宽高背景不提

  1. app:navigationIcon="@drawable/icon_back" :设置返回按钮键
  2. app:popupTheme="@style/OverflowMenuStyle": 设置弹出子菜单样式
  3. app:subtitleTextAppearance="@style/Theme.Toolbar.SubTitle" :设置副标题样式
  4. app:titleTextAppearance="@style/Theme.Toolbar.Title"/>: 设置标题样式

其中OverflowMenuStyle代码如下:

<style name="OverflowMenuStyle" parent="Widget.AppCompat.Light.PopupMenu.Overflow">
        <item name="android:textSize">14sp</item>
        <!--&lt;!&ndash;设置menu菜单的背景色&ndash;&gt;-->
        <item name="android:itemBackground">@color/white</item>
        <!--&lt;!&ndash;设置Menu菜单的字体颜色&ndash;&gt;-->
        <item name="android:textColorPrimary">@android:color/black</item>
        <item name="overlapAnchor">false</item>  <!--把该属性改为false即可使menu位置位于toolbar之下-->
    </style>

注:使用Toolbar时候必须在配置文件中设置样式为: Theme.AppCompat.Light.NoActionBar

Activity中如何使用:

@Override
    protected void onCreate( Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.net_music_list);
		toolbar = findViewById(R.id.toolbar);
        toolbar.setOverflowIcon(ContextCompat.getDrawable(this,R.drawable.more));
        toolbar.setTitle("歌单");
        setSupportActionBar(toolbar);
        ......
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_music,menu);

        if (menu != null){
            if (menu.getClass() == MenuBuilder.class){
                try{
                    Method method = menu.getClass().getDeclaredMethod("setOptionalIconsVisible",Boolean.TYPE);
                    method.setAccessible(true);
                    method.invoke(menu,true);
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }

        return true;
    }

可以看到onCreateOptionsMenu中有一段反射的代码是为了让,子菜单的图标显示出来

ToolBar返回按钮使用方法:

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });

ToolBar其他菜单按钮设置监听的方法

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_icon:
                Toast.makeText(this, "search", Toast.LENGTH_SHORT).show();
                break;
            case R.id.action_search:

                break;
            case R.id.action_notifications:

                break;
            case R.id.action_settings:

                break;
        }
        return super.onOptionsItemSelected(item);
    }

以上是ToolBar最普遍的使用方法。下一篇我们去使用ToolBar来实现更高难度的东西。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值