【Android】顶部导航栏ToolBar设计

一.改变顶部状态栏颜色

<style name="AppTheme"  parent="Theme.AppCompat.Light.NoActionBar">
     <item name="colorPrimary">@android:color/holo_blue_bright</item>
     <item name="colorPrimaryDark">@android:color/holo_blue_bright</item>
</style>

二、顶部导航栏ToolBar

前提条件需要更改为Theme.AppCompat.Light.NoActionBar

  • 在布局中添加一个ToolBar控件。由于要用到Toolbar,所以外层布局要用线性布局,并设置为垂直方向,代码如下
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="fill_parent"
    android:layout_height="53.299988dip"
    android:background="@color/theme_color">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">
    <TextView
        android:id="@+id/toolbar_title"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:ellipsize="end"
        android:gravity="center"
        android:maxLines="1"
        android:textColor="@android:color/white"
        android:textSize="18.0sp"
        android:textStyle="bold" />
     </LinearLayout>

</androidx.appcompat.widget.Toolbar>
  • 然后新建xml布局和相应的 Activity,Activity继承自AppCompatActivity,新建项目一般默认继承自AppCompatActivity,对toolbar进行属性设置。
xml属性类中的设置方法说明
LogosetLogo设置工具栏图标
TitlesetTitle设置标题文字
titleTextColorsetTiitleTextColor 设置标题的文字颜色
titleTextAppearancesetTitleTextAppearance设置标题的文字风格。风格定义在styles.xml中
subtitlesetSubtitle设置副标题文字。副标题在标题下方。
subtitleTextColorsetSubtitleTextColor设置副标题的文字颜色
subtitleTextAppearancesetSubtitleTextAppearance设置副标题的文字风格
navigationIconsetNavigationIcon设置左侧导航图标
setNavigationOnClickListener设置导航图标的点击监听器
 protected void initToolbar(String title) {

        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        // 设置title
        // getSupportActionBar().setTitle(title);
        TextView textView = findViewById(R.id.toolbar_title);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);// 添加默认的返回图标
        getSupportActionBar().setHomeButtonEnabled(true); // 设置返回键可用
        textView.setText(title);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }
  • 如果想要在标题右侧添加图标,则需要借助menu
    (1)在res目录下新建文件夹menu,在menu文件夹下添加savemenu.xml

menu属性:
①menu是菜单项的容器。
②menu元素必须是该文件的根节点,并且能够包含一个或多个item和group元素。
③item是菜单项,用于定义MenuItem,可以嵌套menu元素,以便创建子菜单。
④group是item元素的不可见容器(可选)。可以使用它对菜单项进行分组,使一组菜单项共享可用性和可见性等属性。

item属性:
①android:id:菜单项(MenuItem)的唯一标识
②android:icon:菜单项的图标(可选)
③android:title:菜单项的标题(必选)
④android:showAsAction:指定菜单项的显示方式。

  • ifRoom 表示在屏幕空间足够的情况下显示在Toolbar中,不够的话就显示在菜单中,如果设置该属性,长按时弹出对应的文字
  • never 表示永远不显示在Toolbar中,而是一直显示在菜单中 (默认)
  • always 表示永远显示在Toolbar中,如果屏幕空间不够则不显示
<?xml version="1.0" encoding="utf-8"?>
 <!--
   因为我只需要一个菜单,想让其显示在标题右侧,所以我只需要一个item,showAsAction设置为always
  -->

<menu 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">
    <item
        android:id="@+id/btn_save_course"
        android:title="保存"
        app:showAsAction="always" />
        
</menu>

(2)在activity中添加添加两个方法,使其配合Toolbar使用

//添加布局文件
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.savemenu, menu);
        return true;
    }

//menu,点击事件监听:
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == R.id.btn_save_course) {
            ContentValues cValue = new ContentValues();
            if (minute < 10) {
                cValue.put("time", hour + ":0" + minute);
            } else {
                cValue.put("time", hour + ":" + minute);
            }
            cValue.put("create_time", System.currentTimeMillis() + "");
            cValue.put("repeat", repeatType.getText().toString());
            cValue.put("isSwitchOn", 1);
            cValue.put("ifVibrate", ifvibrat.getText().toString());
            db.insert("clocks", null, cValue);
            Toast.makeText(getApplicationContext(), "保存成功", Toast.LENGTH_SHORT).show();
            Intent intent = new Intent(AddclockActivity.this, ClockActivity.class);
            intent.putExtra("addType", "yes");
            startActivity(intent);
            finish();
        }
        return super.onOptionsItemSelected(item);
    }

三、更改字体样式
①在app目录下创建一个assets文件夹,在assets文件夹下创建fonts文件夹,将相应的字体.ttf文件放在fonts目录下
②在activity中修改字体样式

 text1.setTypeface(Typeface.createFromAsset(getAssets(),"fonts/STXINGKA.TTF"));
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值