自定义窗口标题

我们看到过很多应用,他们的窗口标题行都不是系统默认的 要么有按钮呀之类的, 具体是怎么实现的呢, 让我们一起来看看吧。

步骤:
1.提供自定义标题界面,如: R.layout.title
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我是自定义的"
android:background="#FF0000"
/></LinearLayout>

2.在Activity的onCreate()方法中添加如下代码:
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);

此时的效果如下:
[img]http://dl.iteye.com/upload/attachment/583213/7ea6b4d3-ddcb-3751-803b-8052a4c94b85.jpg[/img]

这时发现虽然标题有背景颜色了。 但是很明显 ,标题分为了两层。 而这时改变的背景只是前面那一部分的背景. 后一部分的还没改变.

我们可以看一下系统窗口标题的界面文件的源代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:fitsSystemWindows="true">
<FrameLayout android:id="@android:id/title_container"
android:layout_width="match_parent"
android:layout_height="?android:attr/windowTitleSize"
style="?android:attr/windowTitleBackgroundStyle">
</FrameLayout>
<FrameLayout android:id="@android:id/content"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:foregroundGravity="fill_horizontal|top"
android:foreground="?android:attr/windowContentOverlay" />
</LinearLayout>

?android:attr/windowTitleSize
?android:attr/windowTitleBackgroundStyle
?android:attr/windowContentOverlay
上述属性的值为:
<style name="Theme">

</style>

@android:style/WindowTitleBackground:
 <style name="WindowTitleBackground">
<item name="android:background">@android:drawable/title_bar</item>
</style>


很明显我们发现,窗口标题采用了两个帧布局进行叠加.,而我们设置背景的是在上面的比较小的一个帧布局.
那怎呢杨才能完成自定义窗口标题的背景设置呢.
我们可以让前面的背景色为透明,然后让后面的帧布局的背景色设置为我们想要的效果即可

即让 style="?android:attr/windowTitleBackgroundStyle">指向我们自定义的样式
并且让 android:foreground="?android:attr/windowContentOverlay" 改为透明色
既可以实现了

3.我们自己定义一个继承系统默认主题的主题,并且让Activity应用该主题
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="mytheme" parent="android:Theme">
<item name="android:windowContentOverlay">@color/trans</item>
<item name="android:windowTitleSize">38dip</item>
<item name="android:windowTitleBackgroundStyle">@style/myBackground</item>
</style>
<color name="trans">
#00000000
</color>
<color name="mybg">#FFFF00</color>
<style name="myBackground">
<item name="android:background">@color/mybg</item>
</style>
</resources>

效果如下
[img]http://dl.iteye.com/upload/attachment/583238/738be523-28f4-3f40-be1e-1a25a30f7b7c.jpg[/img]


界面粗糙请多海涵, 需要时只需改为需要效果即可。
Qt开发 | 无边框窗口 | 自定义标题栏 | 拖拽拉伸 | 窗口阴影 | 圆角窗口 QWidget是 Qt 框架中的一个核心类,它是所有控件和窗口的基类。QWidget提供了创建和管理 GUI 组件的基础功能。Qt所有的窗口、控件以及布局都是派生于QWidget。关键特性与功能窗口和控件的基类:几乎所有的 GUI 组件都是QWidget的子类,包括按钮、文本框、标签、窗口等。布局管理QWidget支持多种布局管理方式,如水平布局、垂直布局和网格布局,这些布局可以帮助开发者轻松地组织控件的位置和大小。事件处理QWidget可以接收和处理各种事件,如鼠标点击、键盘输入、窗口大小变化等。 阅读详情

相关推荐

Qt 之 自定义窗口标题栏

首先自定义标题栏解决了我们程序在不同平台乃至同一平台不同的版本中样式不同的问题,使用自定义标题栏,能够保证外观的一致性,这也是为什么像QQ、有道词典、360等软件都没有使用系统标题栏,都是自定义标题栏了。正是因为自定义标题栏,我们可以自定义不再受约束,想怎么设计就怎么设计。自定义标题栏可以使用自己设计的图标,当然比系统的图标要美观了,颜值当然更高了。下面就讲一讲如何用Qt实现自定义窗口标题栏。

前行之路还需前行 8万+

window.open 自定义标题窗口名称 完美解决方案

问题:打卡一个新窗口的时候 想自定义窗口名称而不是默认的一串串。

weixin_52493208的博客 1856

python设置tkinter中中窗口的标题以及自定义窗口的样式

python设置tkinter中中窗口的标题以及自定义窗口的样式

statistics+insight+vista+power 857

Qt之修改窗口标题、图标以及自定义标题栏(九)

在我们利用Qt设计软件时,经常需要修改窗口标题、更改软件图标等之类的操作,更有甚者需要更换标题栏(因为Qt自带的窗口标题栏无法自定义)。这时需要用到QIcon类、QPixmap类等等相关基础功能的操作,以下是关于如何在不同场景中添加图标、修改标题、更换标题栏(自定义标题栏)的简单例子。

weixin_47006346的博客 6752

COMSOL解的继承

COMSOL解的继承1. 应用场景2. 实现方法2.1. 添加研究步骤2.2. 引用研究 根据参考文献整理而来,原文见: http://blog.sina.com.cn/s/blog_4a0a8b5d010126w5.html https://www.zhihu.com/question/371867999/answer/1309194094 个人学习笔记,如有疏漏,欢迎补充 1. 应用场景 在COMSOL模拟中,一次求解之后往往遇到以下几种情况需要用到解的继承: 1)瞬态求解的继续运算。例如初始设定求解1

jessica0307的博客 1万+

国产信创服务器软硬件兼容情况1 --- ARM架构

信创,即信息技术应用创新产业,它是数据安全、网络安全的基础,也是新基建的重要组成部分...

一只猿的自我修养 4741

Qt实用技巧:自定义窗口标题栏

若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.youkuaiyun.com/qq21497936 本文章博客地址:https://blog.youkuaiyun.com/qq21497936/article/details/79223848 目录 需求 原理 Demo下载地址 关于切图 实现Demo步骤 Qt实用技巧:自定义窗口标题栏 需求 制作窗口...

长沙红胖子 Qt・西安|省级科研团队从业背景,深耕双一流体系高精尖技术配套研发|剥离高精尖机理,沉淀高端特种行业领域 Qt 工程化落地经验|博文仅分享通用技术总结,输出公开普适工程思路。 6万+

跟着团子学SAP PS:项目计划成本与项目预算设计思路

​在做SAP PS模块概览培训的时候,很多时候都会用到下面的一页PPT片子讲到项目计划成本与预算的关系,但真正这幅片子想表达的具体内容甚至大部分PS顾问也是无法阐明清楚的。 而SAP PS的设计其实是在丰富的项目管理学的基础上而开展的,所以今天从业务上结合SAP中的功能点讲一下项目成本计划及预算的逻辑。 在项目管理的十大知识领域中,项目成本管理主要是包括为使项目在批准的预算内完成而对成本进行规划...

Lucas1211的博客 3万+

在子窗口中操作父窗口使用window.parent

window.parent.Location.href; window.parent.Location.reload(); window.parent.frames['iframe1name'].location.href='page2.aspx?nodeid=100'"; window.parent.HideThisDiv(); window.parent.document; wind

ICode联盟 1万+

Java + Selenium + TestNg + Allure Web UI 自动化

我们知道,在Python中针对Web UI自动化有Python + Selenium + Pytest/Unittest +Allure的技术栈。那么对于Java而言,也有其独特的Web UI 自动化技术栈。相同的,我们同样的运用Selenium框架,测试报告同样运用Allure。不同的是,我们运用的语言由Python转化为了Java,测试用例管理框架从Pytest转化为了TestNG。

qq_45594960的博客 1913

攻防世界GFSJ1184_welcome_CAT_CTF

由于它是 PIE 可执行文件,程序加载地址会随机化,这导致你在 GDB 调试时需要处理地址偏移(如 0x246d 变成 0x55555540246d)。:client 程序通过网络连接(get_nc() 和 get_flag(nc))与 server 通信,server 监听在端口 8888。:client 依赖外部共享库(如 libstdc++.so),因此运行时需要这些库存在系统中。程序就是wasd移动,走到不同标记(* $ @ )下方,输入j回车,会有不同反应。两个文件client和server。

拥抱AI的老粽子 1264

java swing 自定义标题栏,缩放窗口,阴影窗口

自定义标题栏是一个很复杂的功能,但是如果不去掉会感觉非常丑,网上基本没有教程,现在我吧教程献给各位苦逼的swing小白。 首先看一下成功图 ???? (最近在做课设,各种坑,这是在做课设中需要用的功能,有空考虑做一个swing框架,帮助一些大学的swing小白) 这是一个自定义的窗口,有阴影边框效果,有自定义标题栏,是不是瞬间高大上了 ????。接下来我们开始教程。 目录一 消除java默认边框二 添加自定义标题栏TitlePanel 主面板TitleButton 标题栏按钮TitleBarRig

言小溪 的博客 7355

FPGA控制DDR读写(AXI4总线接口)

FPGA控制DDR读写

qq_42712308的博客 1万+

QtQuick实现无边框窗口的拉伸,拖拽和自定义标题栏

由于Qt的原生窗口带有的标题栏无法定制,然而通常情况下我们需要自定义窗体上的关闭、最小化等按钮、背景,甚至需要不需要标题栏。在QtQuick实现去除标题栏,也即无边框很简单,只需要在Qml-Window中设置: flags: Qt.Window | Qt.FramelessWindowHint | Qt.WindowMinimizeButtonHint 但是这个时候的窗体不能拖拽,也不能在窗体的...

hai7song的专栏 2726

基于MATLAB的最大重叠离散小波变换(MODWT)算法详解

最大重叠离散小波变换(Maximal Overlap Discrete Wavelet Transform, MODWT)是DWT的重要改进形式,由Percival和Walden等人在20世纪90年代系统提出并完善。MODWT通过消除下采样操作,采用样本平移不变的分解方式,解决了DWT的多个固有缺陷。MODWT的核心创新在于取消下采样环节。与DWT每级分解后对滤波输出进行二分下采样不同,MODWT在每一级都使用相同的滤波器,但通过插入零值的方式调整滤波器系数,保持每级系数数量与原始信号相同。

qq_42212808的博客 115

贝叶斯机器学习在吸附量预测中的应用

本文介绍了贝叶斯机器学习在吸附量预测中的应用。通过Python实现完整的贝叶斯建模流程,包括数据生成、预处理、模型构建与评估。文章对比了贝叶斯与频率学派的差异,详细阐述了贝叶斯线性回归和神经网络的实现方法,并提供了数据可视化、模型诊断等技术细节。该方法不仅能预测吸附量,还能量化预测不确定性,为工程决策提供更全面的依据。全文超过6000字,结合理论推导与代码实践,是应用贝叶斯方法解决实际工程问题的完整指南。

AI的内部世界的博客 167

wpf 窗口自定义标题栏

XAML内容: ​ <shell:WindowChrome.WindowChrome><!--保证窗口边框可以拖拽--> <shell:WindowChrome CaptionHeight="1" ResizeBorderThickness="1,1,1,5"> </shell:WindowChrome> </shell:WindowChrome.WindowChrome> <Grid> <Grid.RowDe

qq_27740983的博客 1585

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

android 修改窗口标题,android自定义窗口标题示例分享

1、建好项目之后在它的layout文件夹下创建一个title.xml文件,作为自定义窗口标题的文件。android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal" >android:layout_width="wrap_content"android...

weixin_39848970的博客 535

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C# wpf 自定义标题栏及无边框窗口

我们日常开发的时候,经常会遇到需要自定义标题栏的UI设计,采用特定颜色的标题栏或者特定样式的按钮,这个时候就需要自定义标题栏了,wpf中自定义标题栏还是相对容易的。

codeofcc的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Qt 自定义窗口标题栏

为什么要自定义标题栏?左边的是 window 自带的标题栏,他无法跟随这自己的 Qt 主题变化而变化(除非使用对应系统的API进行修改)右边是取消了系统自带的标题栏的状态(你还是看到一个标题栏,那是我通过 Qt 自己实现的),是不是美观多了!但这会带来其他的问题,系统的标题栏可以提供窗口的拖动、缩小、放大等基本交互功能,取消掉了标题栏也就无法享受这一部分便利所以在 Qt 实现自定义标题栏不止要实现基本的按键,还要实现窗口的基本交互功能。

kmalloc.的博客 1195

Qt自定义外观--自定义标题栏的窗口

因为标题栏属于窗口管理器控制,也就受限于操作系统, 所以直接利用Qt来修改是不可行的! 通常情况下利用Qt我们 可以自定义标题栏, 这里提供一个简单的例子!  例子比较简, 大致思路是正常创建窗口后, 屏蔽标题栏, 通过布局将 一个QLabel和三个按钮 构成一个“标题栏” 放置在顶端(视个人喜好, 位置可以任意放置), 重新实现必要的事件。 下面分步骤进行: 1. 创建窗口, 屏蔽

http://www.softwareace.cn 王牌软件 1647

C# wpf 在style中自定义标题栏及无边框窗口

本文是《C# wpf 一种style中调用cs代码的方法》的示例,同时也是《C# wpf 自定义标题栏及无边框窗口》的完善,将标题栏及无边框放到了style中,且实现了放大缩小关闭按钮以及拖动功能。这样在一个项目中有多个窗口需要使用自定义无边框效果,就可以直接复用即可,省去了每个窗口都要添加相同的界面和逻辑代码。.........

codeofcc的博客 4537

qt自定义窗口标题栏

qt自带的标题栏有时候无法满足项目所需,且样式单一,无法进行较大改动,因此想到自定义一个标题栏。 步骤: 1、将原标题栏去掉 //设置窗口无标题栏 this->setWindowFlags(Qt::FramelessWindowHint |Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint); qApp->installEventFilter(this); 2、在原窗口的界面顶部预留一块widget,用于作为

bangtanhui的博客 3197

Qt实现自定义标题栏窗口

/实现窗口的事件过滤break;break;break;break;break;//处理在窗口上鼠标按下事件//若m_wnd等于m_widget使用全局坐标,否则使用相对坐标//处理在窗口上鼠标的释放事件//处理在窗口上鼠标移动事件return;//处理鼠标在窗口八方位边角时,改变鼠标形状事件。

kk821521286的博客 464

Qt自定义标题栏(可拖动标题栏编辑修改窗口大小)

记录下Qt的自定义标题栏

weixin_46246664的博客 8788
上一篇: Android预定义样式
下一篇: Linux常用指令介绍
Hel1C
博客等级 码龄17年 6粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值