当前位置: 首页 > 软件库 > 手机/移动开发 > >

TitleBar

授权协议 Apache-2.0 License
开发语言 Java
所属分类 手机/移动开发
软件类型 开源软件
地区 不详
投 递 者 怀刚毅
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

标题栏框架

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

集成步骤

  • 在项目根目录下的 build.gradle 文件中加入
buildscript {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}
allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}
  • 在项目 app 模块下的 build.gradle 文件中加入
dependencies {
    // 标题栏框架:https://github.com/getActivity/TitleBar
    implementation 'com.github.getActivity:TitleBar:9.2'
}

属性大全,如何适配旧版本的属性?

<declare-styleable name="TitleBar">

    <!-- 标题栏背景 -->
    <attr name="android:background" />

    <!-- 标题栏样式 -->
    <attr name="barStyle">
        <enum name="light" value="0x10" />
        <enum name="night" value="0x20" />
        <enum name="transparent" value="0x30" />
        <enum name="ripple" value="0x40" />
    </attr>

    <!-- 子控件水平内间距 -->
    <attr name="childPaddingHorizontal" format="dimension" />
    <!-- 子控件垂直内间距(可用于调整标题栏自适应的高度) -->
    <attr name="childPaddingVertical" format="dimension" />

    <!-- 标题 -->
    <attr name="title" format="string" />
    <attr name="titleColor" format="reference|color" />
    <attr name="titleSize" format="dimension" />
    <attr name="titleGravity">
        <flag name="left" value="0x03" />
        <flag name="right" value="0x05" />
        <flag name="center" value="0x11" />
        <flag name="start" value="0x00800003" />
        <flag name="end" value="0x00800005" />
    </attr>
    <attr name="titleStyle">
        <flag name="normal" value="0" />
        <flag name="bold" value="1" />
        <flag name="italic" value="2" />
    </attr>
    <attr name="titleIcon" format="reference" />
    <attr name="titleIconWidth" format="dimension" />
    <attr name="titleIconHeight" format="dimension" />
    <attr name="titleIconPadding" format="dimension" />
    <attr name="titleIconTint" format="color" />
    <attr name="titleIconGravity">
        <flag name="top" value="0x30" />
        <flag name="bottom" value="0x50" />
        <flag name="left" value="0x03" />
        <flag name="right" value="0x05" />
        <flag name="start" value="0x00800003" />
        <flag name="end" value="0x00800005" />
    </attr>

    <!-- 左标题 -->
    <attr name="leftTitle" format="string"/>
    <attr name="leftTitleColor" format="reference|color" />
    <attr name="leftTitleSize" format="dimension" />
    <attr name="leftTitleStyle">
        <flag name="normal" value="0" />
        <flag name="bold" value="1" />
        <flag name="italic" value="2" />
    </attr>
    <attr name="leftIcon" format="reference" />
    <attr name="leftIconWidth" format="dimension" />
    <attr name="leftIconHeight" format="dimension" />
    <attr name="leftIconPadding" format="dimension" />
    <attr name="leftIconTint" format="color" />
    <attr name="leftIconGravity">
        <flag name="top" value="0x30" />
        <flag name="bottom" value="0x50" />
        <flag name="left" value="0x03" />
        <flag name="right" value="0x05" />
        <flag name="start" value="0x00800003" />
        <flag name="end" value="0x00800005" />
    </attr>
    <attr name="leftBackground" format="reference|color" />

    <!-- 右标题 -->
    <attr name="rightTitle" format="string" />
    <attr name="rightTitleColor" format="reference|color" />
    <attr name="rightTitleSize" format="dimension" />
    <attr name="rightTitleStyle">
        <flag name="normal" value="0" />
        <flag name="bold" value="1" />
        <flag name="italic" value="2" />
    </attr>
    <attr name="rightIcon" format="reference" />
    <attr name="rightIconWidth" format="dimension" />
    <attr name="rightIconHeight" format="dimension" />
    <attr name="rightIconPadding" format="dimension" />
    <attr name="rightIconTint" format="color" />
    <attr name="rightIconGravity">
        <flag name="top" value="0x30" />
        <flag name="bottom" value="0x50" />
        <flag name="left" value="0x03" />
        <flag name="right" value="0x05" />
        <flag name="start" value="0x00800003" />
        <flag name="end" value="0x00800005" />
    </attr>
    <attr name="rightBackground" format="reference|color" />

    <!-- 分割线 -->
    <attr name="lineVisible" format="boolean" />
    <attr name="lineDrawable" format="reference|color" />
    <attr name="lineSize" format="dimension" />

</declare-styleable>

XML示例

设置监听事件

mTitleBar.setOnTitleBarListener(new OnTitleBarListener() {

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

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

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

统一 TitleBar 样式

  • 如果对 TitleBar 的默认样式或者属性不满意,可以在 Application 初始化的地方进行拦截并修改
public class XxxApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        // 初始化 TitleBar 默认样式
        TitleBar.setDefaultStyle(new ITitleBarStyle());
    }
}

框架亮点

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

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

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

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

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

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

作者的其他开源项目

微信公众号:Android轮子哥

Android 技术分享 QQ 群:78797078

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

点击查看捐赠列表

License

Copyright 2018 Huang JinQun

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
  • 需要添加titlebar的布局,修改titlebar的高度,以及详细指明了popupwindow的使用 package com.estrongs.android.ui.homepage.blocks; import com.estrongs.android.pop.R; import android.app.Activity; import android.os.Bundle; import an

  • Android标题栏TitleBar全攻略 Android开发技术 2013 年 3 月 24 日 很多细心的网友发现Android浏览器的标题栏TitleBar的功能比较多,细心的网友在查看Browser时会发现,从左到右依次为网站图标(favicon)、标题、最右边的动画进度条(圆圈)、背景进度条(和前面的不在一层),今天我们就一起来看看Android标题栏高级实现方法。 在Android B

  • gradle版本 classpath "com.android.tools.build:gradle:7.0.4" 项目根目录下的build.gradle里dependencies下添加 //TitleBar implementation 'com.github.getActivity:TitleBar:8.6' settings.gradle文件添加 maven {url "https://ji

  • 实现状态栏向上滑动,控制titlebar类似相关的控件隐藏和显示的 修改透明度 主要实现思路 1.主要是通过监听scrllview的滑动scrollY的高度控制titlebar的显示或隐藏以及和状态栏的透明或非透明(沉浸式状态栏效果) 大致思路步骤说明(具体还是看代码) 1初始化状态栏 :initStatusBar()方法 2.设置titlebar的高度 需要处理statusbar的高度 :onA

  • let menuButtonObject = wx.getMenuButtonBoundingClientRect(); wx.getSystemInfo({ success: res => { let statusBarHeight = res.statusBarHeight, navTop = menuButtonObject.top,/

  • 最近写了好几个小项目,每个title的设计都是大同小异,左边返回按钮中间标题使用文字或者图片,右边也是文字或者图片。大体都是这样的设计,但是每个界面都要画一遍title说实话真的很烦。 1.先画一个titlebar的布局文件 titlebar.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="

  • title_bar.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_wi

  • 为了修改样式,便于后续皮肤的更换,重绘了QDockWidget 的titleBar totalTitleBar.h #ifndef TOTALTITLEBAR_H #define TOTALTITLEBAR_H #include <QSize> #include <QDockWidget> #include <QMouseEvent> #include <QWidget> #include <Q

  • 供ALV输出EXCEL时调用。   动态地改变TITLEBAR上的文字描写叙述,详细使用方法例如以下:   1、双击TITLEBAR。进入TITLEBAR的编辑框,在这里写入&1,相当于宏定义的宏的參数。   2、使用SET TITLEBAR 'TITLBAR' WITH P_TITLE. 来指定变量。这样TITLEBAR输出的就是P_TITLE这个变量的值。   注意:标准函数:POPUP_WI

 相关资料
  • 主要内容:1 如何在Swing修改TitleBar图标,2 Swing修改TitleBar图标的案例1 如何在Swing修改TitleBar图标 Frame类的setIconImage() 方法用于更改Frame或Window的图标。它将更改在“Frame”或“Window”左侧显示的图标。 该工具包类用于获取图像类的实例在AWT和Swing的。 Toolkit类是Abstract Window Toolkit(AWT)中每个实现的抽象 超类。Toolkit的子类用于绑定各种组件。它继承了Obj

  • 我目前正在使用OpenJDK11和OpenJFX构建一个应用程序。它编译得很好,并启动,但没有标题栏,如果我单击靠近应用程序边缘,它注册为在它后面的任何窗口上的单击。 我正在使用IntelliJ IDEA,花了一段时间才弄清楚如何将OpenJFX与它一起使用。不管怎样,以下是系统的详细信息: 我运行的是初等OS5.0Juno(基于Ubuntu18.04,一切都是GTK)IntelliJ IDEA(