前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android--Toolbar基本使用

Android--Toolbar基本使用

作者头像
aruba
发布2020-07-02 15:27:12
1.5K0
发布2020-07-02 15:27:12
举报
文章被收录于专栏:android技术
谷歌最初推出Actionbar想用于安卓app统一导航行样式,但由于Actionbar自定义性不高,又不是很好看(很丑),民间开发出了另一种控件并被谷歌收入v7包下,它就是Toolbar
使用Toolbar有几点要注意的(这边使用的v7包的Toolbar,由于继承Activity已经过时,但如果实在想继承Activity的话,使用v4包下的Toolbar):

1.App主题使用NoActionBar 2.Activity需要继承AppCompatActivity 3.在代码中调用setSupportActionBar方法替换Actionbar

在xml中使用Toolbar:
代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <android.support.v7.widget.Toolbar
        android:id="@+id/tb_demo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"></android.support.v7.widget.Toolbar>
</LinearLayout>
在代码中设置属性,也可以在xml中使用app:属性名 直接设置
代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {
    private Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toolbar = findViewById(R.id.tb_demo);
        toolbar.setTitle("主标题");
        toolbar.setSubtitle("副标题");
        //设置左侧导航图标
        toolbar.setNavigationIcon(R.drawable.ic_arrow_back_black_24dp);
        //设置导航点击监听
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                
            }
        });
        setSupportActionBar(toolbar);
    }
}

toolbar.jpg

和Actionbar相同,Toolbar也支持菜单栏,我们需要在xml中定义,用法和NavigationView的菜单一样
代码语言:javascript
复制
<?xml version ="1.0" encoding ="utf-8"?><!--  Learn More about how to use App Actions: https://developer.android.com/guide/actions/index.html -->
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:title="搜索"
        app:showAsAction="always" />

    <item
        android:title="其他"
        app:showAsAction="never" />
    <item
        android:title="设置"
        app:showAsAction="ifRoom" />
</menu>
其中app:showAsAction可以设置item的显示,always表示一直显示,never表示一直放入overflow中(右侧更多图标的按钮),ifRoom表示如果显示不下,则放入overflow中,定义好xml后,需要在Activity中改写onCreateOptionsMenu方法
代码语言:javascript
复制
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return super.onCreateOptionsMenu(menu);
    }
和NavigationView源码中一样使用的getMenuInflater方法获取xml解析器,在这里可以绑定点击事件,也可以通过Toolbar的setOnMenuItemClickListener方法设置,效果:

带菜单的toolbar.jpg

点击右侧overflow的toolbar.jpg

弹框的样式可以通过Toolbar的setPopupTheme方法改变
还可以通过style设置Toolbar的字体颜色,如设置副标题颜色:
代码语言:javascript
复制
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <!--设置状态蓝颜色-->
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <!--副标题及overflow颜色-->
        <item name="android:textColorSecondary">#ffa000</item>
    </style>
除此以外,Toolbar还有这些API
代码语言:javascript
复制
ToolBar  API
collapseActionView()
折叠当前展开了行动视图。

showOverflowMenu()
从显示相关的菜单溢出项目。

dismissPopupMenus()
关闭所有当前显示弹出式菜单,包括溢出或子菜单。

isOverflowMenuShowing()
检查溢出菜单是否正在显示。

inflateMenu(int resId)
膨胀的菜单资源到这个工具栏。

hideOverflowMenu()
隐藏关联菜单溢出项目。


setContentInsetEndWithActions(int insetEndWithActions)
设置开始的内容插入时操作按钮都存在使用。


setContentInsetStartWithNavigation(int insetStartWithNavigation)
设置启动内容插入时,导航按钮存在使用。


setContentInsetsRelative(int contentInsetStart, int contentInsetEnd)
设置此相对布局方向工具栏的内容插图。

setLogo(Drawable drawable)
设置一个Log图片。

setLogoDescription(int resId)
设置Log的说明。

setNavigationContentDescription(CharSequence description)
如果存在设置导航按钮的内容。

setNavigationOnClickListener(View.OnClickListener listener)
设置一个侦听器来导航事件

setOverflowIcon(Drawable icon)
设置图标使用的溢出按钮。

setSubtitle(CharSequence subtitle)
设置此工具栏的字幕。

setSubtitleTextAppearance(Context context, int resId)
设置文本颜色,大小,样式,颜色提示,并突出显示颜色从指定TextAppearance资源。

setTitleMargin(int start, int top, int end, int bottom)
设置标题边距。

setTitleTextAppearance(Context context, int resId)
设置文本颜色,大小,样式,颜色提示,并突出显示颜色从指定TextAppearance资源。

setTitleTextColor(int color)
设置标题的文本颜色,如果存在的话
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 谷歌最初推出Actionbar想用于安卓app统一导航行样式,但由于Actionbar自定义性不高,又不是很好看(很丑),民间开发出了另一种控件并被谷歌收入v7包下,它就是Toolbar
  • 使用Toolbar有几点要注意的(这边使用的v7包的Toolbar,由于继承Activity已经过时,但如果实在想继承Activity的话,使用v4包下的Toolbar):
  • 在xml中使用Toolbar:
  • 在代码中设置属性,也可以在xml中使用app:属性名 直接设置
    • 和Actionbar相同,Toolbar也支持菜单栏,我们需要在xml中定义,用法和NavigationView的菜单一样
    • 其中app:showAsAction可以设置item的显示,always表示一直显示,never表示一直放入overflow中(右侧更多图标的按钮),ifRoom表示如果显示不下,则放入overflow中,定义好xml后,需要在Activity中改写onCreateOptionsMenu方法
    • 和NavigationView源码中一样使用的getMenuInflater方法获取xml解析器,在这里可以绑定点击事件,也可以通过Toolbar的setOnMenuItemClickListener方法设置,效果:
    • 弹框的样式可以通过Toolbar的setPopupTheme方法改变
    • 还可以通过style设置Toolbar的字体颜色,如设置副标题颜色:
    • 除此以外,Toolbar还有这些API
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档