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

TitleBar

项目地址:getActivity/TitleBar 

简介:A simple generic title bar

更多:作者   提 Bug   

标签:

博客地址:Android 标题栏(TitleBar)绝佳解决方案

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

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

5.0 版本、5.0 版本、5.0 版本 XML 属性已经改头换面了,请尽快进行适配

集成步骤

扫描二维码关注公众号,回复: 5915150 查看本文章
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());
    }
}

框架亮点

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

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

  • 支持夜间模式:可以直接引用框架中的 TitleBarNightStyle 样式

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

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

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

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

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

Android 技术讨论 Q 群:78797078

如果您觉得我的开源库帮你节省了大量的开发时间,请扫描下方的二维码随意打赏,要是能打赏个 10.24 :monkey_face:就太:thumbsup:了。您的支持将鼓励我继续创作:octocat:

猜你喜欢

转载自blog.csdn.net/u014608640/article/details/89336542