Android标题栏(TitleBar)绝佳解决方案

这可能是性能最优、使用最简单,支持自定义的标题栏

Github传送地址,欢迎Star,Pull及issue

已投入公司项目多时,没有任何毛病,点击此处下载Demo

想了解实现原理的可以参考文章:纯手工打造一个通用的标题栏TitleBar

集成步骤

dependencies {
    implementation 'com.hjq:titlebar:5.0'
}

属性大全(划重点,要考)

<declare-styleable name="TitleBar" >
    <!-- 整体样式 -->
    <attr name="barStyle">
        <enum name="light" value="0x10" />
        <enum name="night" value="0x20" />
        <enum name="transparent" value="0x30" />
    </attr>
    <!-- 中间 -->
    <attr name="title" format="string" />
    <attr name="titleColor" format="color" />
    <attr name="titleSize" format="dimension" />
    <!-- 左边 -->
    <attr name="leftTitle" format="string"/>
    <attr name="leftIcon" format="reference" /><!-- leftIcon 优先于 backButton -->
    <attr name="backButton" format="boolean" /><!-- 返回按钮(默认开) -->
    <attr name="leftColor" format="color" />
    <attr name="leftSize" format="dimension" />
    <attr name="leftBackground" format="reference|color" />
    <!-- 右边 -->
    <attr name="rightTitle" format="string" />
    <attr name="rightIcon" format="reference" />
    <attr name="rightColor" format="color" />
    <attr name="rightSize" format="dimension" />
    <attr name="rightBackground" format="reference|color" />
    <!-- 分割线 -->
    <attr name="lineVisible" format="boolean" />
    <attr name="lineColor" format="reference|color" />
    <attr name="lineSize" format="dimension" />
</declare-styleable>

XML示例

点我查看完整的Demo示例

<com.hjq.bar.TitleBar
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:title="默认的标题栏" />

设置监听事件

mTitleBar.setOnTitleBarListener(new OnTitleBarListener() {

    @Override
    public void onLeftClick(View v) {
        ToastUtils.show("左项View被点击");
    }

    @Override
    public void onTitleClick(View v) {
        ToastUtils.show("中间View被点击");
    }

    @Override
    public void onRightClick(View v) {
        ToastUtils.show("右项View被点击");
    }
});

统一TitleBar样式

如果对TitleBar的默认样式不满意,可以在Application初始化样式,具体可参考TitleBarLightStyle的实现

public class XXApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        TitleBar.initStyle(new ITitleBarStyle());
    }
}

混淆规则

-keep class com.hjq.bar.** {*;}

框架亮点

  • 性能最佳:不使用LayoutInflater,而使用代码创建View的形式

  • 体验最优:TitleBar默认样式效果已经非常好,可下载Demo测试

  • 支持操控子控件:可以在代码中获取TitleBar的子控件进行调用相关的API

  • 支持自定义布局:可将TitleBar当做FrameLayout使用,直接在XML中自定义布局

  • 兼容沉浸式状态栏:兼容Github的沉浸式状态栏框架,达到完全沉浸的效果

  • 框架兼容性良好:本框架不依赖任何第三方库,支持兼容所有的安卓版本

  • 支持全局配置样式:可以在Application中初始化TitleBar样式,达到一劳永逸的效果

Android 技术讨论 Q 群:10047167

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,353评论 25 708
  • 【0314能量按钮】6345-lemon 第21次分享 这10个秘密,目前能做到的只是好好做人、好好进步、好好度日...
    lemon_c450阅读 162评论 0 0
  • ——纪念一代军神刘伯承元帅 一束亮光 作 拔剑渝川,举义南昌,饮马太行。逐鹿中原取淮海,过长江、扫西南...
    一束亮光阅读 751评论 1 1
  • 酒泉城里修了所新学校,北苑学校。有一回从旁边路过,新崭崭的,喜欢。要是将来树长起来了,会有许多好看。毛德军校长请我...
    行吟斯基阅读 1,170评论 10 9
  • 余生请善待自己 尊重自己的每个决定 尊重自己内心的想法 尊重自己的情绪 爱护自己的身体 允许自己生气 给自己发泄的...
    大爱无痕阅读 310评论 2 7