一.改变顶部状态栏颜色

<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属性

类中的设置方法

说明

Logo

setLogo

设置工具栏图标

Title

setTitle

设置标题文字

title

TextColor

setTiitleTextColor 设置标题的文字颜色

titleTextAppearance

setTitleTextAppearance

设置标题的文字风格。风格定义在styles.xml中

subtitle

setSubtitle

设置副标题文字。副标题在标题下方。

subtitleTextColor

setSubtitleTextColor

设置副标题的文字颜色

subtitleTextAppearance

setSubtitleTextAppearance

设置副标题的文字风格

navigationIcon

setNavigationIcon

设置左侧导航图标


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"));