• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Android--Toolbar基本使用

武飞扬头像
Luke
帮助1

谷歌最初推出Actionbar想用于安卓app统一导航行样式,但由于Actionbar自定义性不高,又不是很好看(很丑),民间开发出了另一种控件并被谷歌收入v7包下,它就是Toolbar
使用Toolbar有几点要注意的(这边使用的v7包的Toolbar,由于继承Activity已经过时,但如果实在想继承Activity的话,使用v4包下的Toolbar):

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

在xml中使用Toolbar:
  1.  
    <?xml version="1.0" encoding="utf-8"?>
  2.  
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.  
    xmlns:app="http://schemas.android.com/apk/res-auto"
  4.  
    xmlns:tools="http://schemas.android.com/tools"
  5.  
    android:layout_width="match_parent"
  6.  
    android:layout_height="match_parent"
  7.  
    tools:context=".MainActivity">
  8.  
     
  9.  
    <android.support.v7.widget.Toolbar
  10.  
    android:id="@ id/tb_demo"
  11.  
    android:layout_width="match_parent"
  12.  
    android:layout_height="wrap_content"
  13.  
    android:background="@color/colorPrimary"></android.support.v7.widget.Toolbar>
  14.  
    </LinearLayout>
在代码中设置属性,也可以在xml中使用app:属性名 直接设置
  1.  
    public class MainActivity extends AppCompatActivity {
  2.  
    private Toolbar toolbar;
  3.  
     
  4.  
    @Override
  5.  
    protected void onCreate(Bundle savedInstanceState) {
  6.  
    super.onCreate(savedInstanceState);
  7.  
    setContentView(R.layout.activity_main);
  8.  
    toolbar = findViewById(R.id.tb_demo);
  9.  
    toolbar.setTitle("主标题");
  10.  
    toolbar.setSubtitle("副标题");
  11.  
    //设置左侧导航图标
  12.  
    toolbar.setNavigationIcon(R.drawable.ic_arrow_back_black_24dp);
  13.  
    //设置导航点击监听
  14.  
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
  15.  
    @Override
  16.  
    public void onClick(View v) {
  17.  
     
  18.  
    }
  19.  
    });
  20.  
    setSupportActionBar(toolbar);
  21.  
    }
  22.  
    }
学新通
学新通
toolbar.jpg
和Actionbar相同,Toolbar也支持菜单栏,我们需要在xml中定义,用法和NavigationView的菜单一样
  1.  
    <?xml version ="1.0" encoding ="utf-8"?><!-- Learn More about how to use App Actions: https://developer.android.com/guide/actions/index.html -->
  2.  
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
  3.  
    xmlns:app="http://schemas.android.com/apk/res-auto">
  4.  
    <item
  5.  
    android:title="搜索"
  6.  
    app:showAsAction="always" />
  7.  
     
  8.  
    <item
  9.  
    android:title="其他"
  10.  
    app:showAsAction="never" />
  11.  
    <item
  12.  
    android:title="设置"
  13.  
    app:showAsAction="ifRoom" />
  14.  
    </menu>
其中app:showAsAction可以设置item的显示,always表示一直显示,never表示一直放入overflow中(右侧更多图标的按钮),ifRoom表示如果显示不下,则放入overflow中,定义好xml后,需要在Activity中改写onCreateOptionsMenu方法
  1.  
    @Override
  2.  
    public boolean onCreateOptionsMenu(Menu menu) {
  3.  
    getMenuInflater().inflate(R.menu.menu, menu);
  4.  
    return super.onCreateOptionsMenu(menu);
  5.  
    }
和NavigationView源码中一样使用的getMenuInflater方法获取xml解析器,在这里可以绑定点击事件,也可以通过Toolbar的setOnMenuItemClickListener方法设置,效果:
学新通
带菜单的toolbar.jpg
学新通
点击右侧overflow的toolbar.jpg
弹框的样式可以通过Toolbar的setPopupTheme方法改变
还可以通过style设置Toolbar的字体颜色,如设置副标题颜色:
  1.  
    <!-- Base application theme. -->
  2.  
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
  3.  
    <!-- Customize your theme here. -->
  4.  
    <item name="colorPrimary">@color/colorPrimary</item>
  5.  
    <!--设置状态蓝颜色-->
  6.  
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
  7.  
    <item name="colorAccent">@color/colorAccent</item>
  8.  
    <!--副标题及overflow颜色-->
  9.  
    <item name="android:textColorSecondary">#ffa000</item>
  10.  
    </style>
除此以外,Toolbar还有这些API
  1.  
    ToolBar API
  2.  
    collapseActionView()
  3.  
    折叠当前展开了行动视图。
  4.  
     
  5.  
    showOverflowMenu()
  6.  
    从显示相关的菜单溢出项目。
  7.  
     
  8.  
    dismissPopupMenus()
  9.  
    关闭所有当前显示弹出式菜单,包括溢出或子菜单。
  10.  
     
  11.  
    isOverflowMenuShowing()
  12.  
    检查溢出菜单是否正在显示。
  13.  
     
  14.  
    inflateMenu(int resId)
  15.  
    膨胀的菜单资源到这个工具栏。
  16.  
     
  17.  
    hideOverflowMenu()
  18.  
    隐藏关联菜单溢出项目。
  19.  
     
  20.  
     
  21.  
    setContentInsetEndWithActions(int insetEndWithActions)
  22.  
    设置开始的内容插入时操作按钮都存在使用。
  23.  
     
  24.  
     
  25.  
    setContentInsetStartWithNavigation(int insetStartWithNavigation)
  26.  
    设置启动内容插入时,导航按钮存在使用。
  27.  
     
  28.  
     
  29.  
    setContentInsetsRelative(int contentInsetStart, int contentInsetEnd)
  30.  
    设置此相对布局方向工具栏的内容插图。
  31.  
     
  32.  
    setLogo(Drawable drawable)
  33.  
    设置一个Log图片。
  34.  
     
  35.  
    setLogoDescription(int resId)
  36.  
    设置Log的说明。
  37.  
     
  38.  
    setNavigationContentDescription(CharSequence description)
  39.  
    如果存在设置导航按钮的内容。
  40.  
     
  41.  
    setNavigationOnClickListener(View.OnClickListener listener)
  42.  
    设置一个侦听器来导航事件
  43.  
     
  44.  
    setOverflowIcon(Drawable icon)
  45.  
    设置图标使用的溢出按钮。
  46.  
     
  47.  
    setSubtitle(CharSequence subtitle)
  48.  
    设置此工具栏的字幕。
  49.  
     
  50.  
    setSubtitleTextAppearance(Context context, int resId)
  51.  
    设置文本颜色,大小,样式,颜色提示,并突出显示颜色从指定TextAppearance资源。
  52.  
     
  53.  
    setTitleMargin(int start, int top, int end, int bottom)
  54.  
    设置标题边距。
  55.  
     
  56.  
    setTitleTextAppearance(Context context, int resId)
  57.  
    设置文本颜色,大小,样式,颜色提示,并突出显示颜色从指定TextAppearance资源。
  58.  
     
  59.  
    setTitleTextColor(int color)
  60.  
    设置标题的文本颜色,如果存在的话
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfagbh
系列文章
更多 icon
同类精品
更多 icon
继续加载