我们看到过很多应用,他们的窗口标题行都不是系统默认的 要么有按钮呀之类的, 具体是怎么实现的呢, 让我们一起来看看吧。
步骤:
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);
此时的效果如下:
这时发现虽然标题有背景颜色了。 但是很明显 ,标题分为了两层。 而这时改变的背景只是前面那一部分的背景. 后一部分的还没改变.
我们可以看一下系统窗口标题的界面文件的源代码
<?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>
效果如下
界面粗糙请多海涵, 需要时只需改为需要效果即可。
- 大小: 9.8 KB
- 大小: 9.9 KB
分享到:
相关推荐
以上代码用Qt实现了自定义窗口标题栏,非常实用,提供了窗口图标、窗口标题、最小化、最大化、关闭按钮等几个部分。可以应用到每一个窗口中去,保持每个窗口外观的一致性,同时自定义的标题栏也比系统自带的漂亮很多...
以上代码用Qt实现了自定义窗口标题栏,非常实用,提供了窗口图标、窗口标题、最小化、最大化、关闭按钮等几个部分。可以应用到每一个窗口中去,保持每个窗口外观的一致性,同时自定义的标题栏也比系统自带的漂亮很多...
本主题聚焦于使用QT C++库来实现自定义窗口标题栏的功能,包括关闭、最小化和最大化窗口的控制。QT是一个强大的跨平台应用程序开发框架,支持多种操作系统,如Windows、Linux和macOS。 首先,我们需要了解QT中的...
以上代码用Qt实现了自定义窗口标题栏,非常实用,提供了窗口图标、窗口标题、最小化、最大化、关闭按钮等几个部分。可以应用到每一个窗口中去,保持每个窗口外观 的一致性,同时自定义的标题栏也比系统自带的漂亮很...
本文将深入探讨如何在QT中创建自定义窗口,并实现自由拖动和自定义标题的功能。 首先,我们需要了解QT中的QMainWindow类,它是大多数QT应用程序的基础,提供了菜单、工具栏和状态栏等标准窗口元素。然而,为了...
本资源实现了一种wpf在style中自定义标题栏无边框窗口的方法。style内部的实现其实没那么简单,尤其是实现按钮逻辑以及拖动逻辑,需要在style中关联cs代码,这就要求我们熟悉绑定技巧、附加属性还有ContentPresenter...
然而,为了自定义标题栏,我们通常需要创建一个新的QWidget作为窗口的上部,并在这个自定义的QWidget上实现标题栏的功能。 以下步骤可以帮助你创建一个自定义标题栏: 1. **创建自定义标题栏类**: 创建一个继承...
WindowStyle="None" ResizeMode="NoResize" 当设置无标题栏,无拖动边框时还可以拉抻窗口大小,并自制标题栏部分。 重构tabControl的header部分,使用togglebutton代替且支持图标+文字显示
上一章我们实现了在style中自定义标题栏,解决了复用性的问题。但是在实际使用中,还是存在一些问题的,比如有些界面需要放几个菜单在标题栏或者不需要最大化按钮等,就会变得很不灵活。这时候就需要对style进行...
1、建好项目之后在它的layout文件夹下创建一个title.xml文件,作为自定义窗口标题的文件。 代码如下:<?xml version=”1.0″ encoding=”utf-8″?>”http://schemas.android.com/apk/res/android” android:...
自定义winform 窗口标题栏 主要代码 public partial class ZForm : Form { private bool moving = false; private Point oldMousePosition; public new FormBorderStyle FormBorderStyle { get { return ...
在本文中,我们将深入探讨如何在WPF(Windows Presentation Foundation)框架中实现自定义窗口模板。自定义窗口模板是创建独特、个性化用户界面的关键技术,它允许开发者跳出默认的窗口样式,为应用程序提供独一无二...
总的来说,自定义窗口标题栏和背景涉及到了Windows编程的基本概念,如窗口过程、消息处理、设备上下文以及绘图函数。通过实践和理解这些知识点,开发者可以进一步提升在VC++中创建独特用户界面的能力。
在标题提到的示例中,开发者通过结合两个BMP位图文件实现了自定义窗口形状,展示了一架镂空的直升机模型。用户可以通过点击直升机区域来拖动窗口,增加了互动性和趣味性。 首先,我们需要理解Windows系统中的窗口...
在新的类中,你可以添加必要的控件,如关闭、最小化和最大化的按钮,以及窗口标题文本。 2. **布局管理**:利用QLayout对标题栏内的元素进行布局。这可以确保窗口大小变化时,标题栏内元素的位置和大小能够自动调整...
对JFrame窗口进行了重写 最大最小化按钮可以改变(我用的是qq上的最大最小化按钮图标) 对JFrame进行更改 得到了自己想要的窗口 本窗口是用来做局域聊天窗口特别设计的 详细 内容 代码都有详细注释谢谢下载
在Qt5中,自定义窗口标题栏是通过重写窗口控件(如`QWidget`或`QMainWindow`)的默认行为来实现的。开发者通常会创建一个新的类,继承自Qt的窗口类,并覆盖`paintEvent()`函数来绘制自定义的标题栏。此外,还需要...
这个自定义窗口框架是利用QT库创建的一个项目,目的是实现更灵活和个性化的窗口操作功能。 首先,我们要理解QT中的窗口系统。在QT中,`QWidget`是所有图形用户界面(GUI)元素的基础类,包括窗口。`QMainWindow`是...
在Windows Forms(WinForm)开发中,有时我们可能需要自定义窗口标题栏,例如在标题栏上添加额外的按钮功能。这个"WinForm 中在窗口标题栏上加按钮.zip"文件提供了一个示例,帮助开发者了解如何在WinForm应用程序的...