CommonTitleBar

CommonTitleBar

开发过程中,如果页面过多,需要构建大量重复的标题栏布局,浪费开发时间且不利于后期维护。本项目总结了几种常用的使用场景,将标题栏封装成控件,Java代码实现,对当前主流的沉浸式提供了支持,供有需要的同学使用,欢迎提供改进意见。

Demo下载

功能描述

  1. 支持左、中、右常规标题栏设置;
  2. 支持自定义视图;
  3. 支持沉浸式标题栏;
首页 快速预览
CommonTitleBar_第1张图片 CommonTitleBar_第2张图片
中间自定义+右边自定义 中间搜索框+左右自定义

使用介绍

添加依赖

buildscript {
    allprojects {
        repositories {
            jcenter()
        }
    }
}

dependencies {
    compile 'com.wuhenzhizao:titlebar:1.1.3'
}

布局中引入控件

    // 中间自定义视图

监听标题栏操作

点击事件

titleBar.setListener(new CommonTitleBar.OnTitleBarListener() {
    @Override
    public void onClicked(View v, int action, String extra) {
        if (action == CommonTitleBar.ACTION_LEFT_TEXT) {
            ...
        }
        // CommonTitleBar.ACTION_LEFT_TEXT;        // 左边TextView被点击
        // CommonTitleBar.ACTION_LEFT_BUTTON;      // 左边ImageBtn被点击
        // CommonTitleBar.ACTION_RIGHT_TEXT;       // 右边TextView被点击
        // CommonTitleBar.ACTION_RIGHT_BUTTON;     // 右边ImageBtn被点击
        // CommonTitleBar.ACTION_SEARCH;           // 搜索框被点击,搜索框不可输入的状态下会被触发
        // CommonTitleBar.ACTION_SEARCH_SUBMIT;    // 搜索框输入状态下,键盘提交触发,此时,extra为输入内容
        // CommonTitleBar.ACTION_SEARCH_VOICE;     // 语音按钮被点击
        // CommonTitleBar.ACTION_SEARCH_DELETE;    // 搜索删除按钮被点击
        // CommonTitleBar.ACTION_CENTER_TEXT;      // 中间文字点击
    }
});

双击事件

titleBar.setDoubleClickListener(new CommonTitleBar.OnTitleBarDoubleClickListener() {
    @Override
    public void onClicked(View v) {
        Toast.makeText(MainActivity.this, "Titlebar double clicked!", Toast.LENGTH_SHORT).show();
    }
});

自定义布局事件(以右侧自定义布局为例)

View rightCustomLayout = titleBar.getRightCustomView();
rightCustomLayout.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    }
});
// 布局child view添加监听事件
rightCustomLayout.findViewById(R.id.子控件ID).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    }
});

动态切换状态栏图标颜色

titleBar.toggleStatusBarMode();

注意点

  1. 如果出现全屏与键盘的冲突导致的键盘被遮挡问题,请在Activity.onAttachedToWindow()方法中加入如下代码,或在布局根节点加入 fitSystemWindow=true
  @Override
  public void onAttachedToWindow() {
      super.onAttachedToWindow();
      KeyboardConflictCompat.assistWindow(getWindow());
  }
  1. 若出现页面其他输入组件无法自动获取焦点的情况,请修改配置titlebar:centerTextMarquee="false"

更新日志

  • v1.1.3

增加centerTextMarquee属性,灵活配置标题文字的跑马灯效果,解决标题栏开启跑马灯效果,页面其他输入框无法自动获取焦点的问题;

  • v1.1.2

CommonTitleBar剥离KeyboardConflictCompat;

  • v1.1.0~1.1.1

重构StatusBarUtils,修复部分手机沉浸式标题栏失效的问题;

最近的重心

Kotlin-Adapter: 使用kotlin语法的BaseAdapter,语法简单,支持多种样式,支持多种效果,欢迎加sta

你可能感兴趣的:(Android,不错文章转载)