我们看到过很多应用,他们的窗口标题行都不是系统默认的 要么有按钮呀之类的, 具体是怎么实现的呢, 让我们一起来看看吧。
步骤:
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实现了自定义窗口标题栏,非常实用,提供了窗口图标、窗口标题、最小化、最大化、关闭按钮等几个部分。可以应用到每一个窗口中去,保持每个窗口外观 的一致性,同时自定义的标题栏也比系统自带的漂亮很...
QT自定义窗口 自由拖动 自定义标题
本资源实现了一种wpf在style中自定义标题栏无边框窗口的方法。style内部的实现其实没那么简单,尤其是实现按钮逻辑以及拖动逻辑,需要在style中关联cs代码,这就要求我们熟悉绑定技巧、附加属性还有ContentPresenter...
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:...
用qt5写的自定义标题栏,做相应的改变也可以在其他版本运行,去掉了系统默认的标题栏,自己实现关闭,最大化,最小化,双击最大化最小化功能,这对标题栏的美化有帮助
自定义winform 窗口标题栏 主要代码 public partial class ZForm : Form { private bool moving = false; private Point oldMousePosition; public new FormBorderStyle FormBorderStyle { get { return ...
对JFrame窗口进行了重写 最大最小化按钮可以改变(我用的是qq上的最大最小化按钮图标) 对JFrame进行更改 得到了自己想要的窗口 本窗口是用来做局域聊天窗口特别设计的 详细 内容 代码都有详细注释谢谢下载
一个用QT实现的自定义窗口工程,实现了窗口的拖动缩放、拖动标题移动窗口的功能。
qt自定义窗口标题栏,能移动和缩放,简易文本编辑器,可以把文本信息存储在图片中 。
基于QT的自定义窗口,包括标题栏定义,窗口的放大缩小拖动等, 还有最大化最小化哈
WPF自定义窗口源码 功能介绍: 效果实现: 1.窗体的圆角 2.自定义标题栏及按钮 3.自定义状态栏 4.窗体的半透明效果 5.窗体4周有一圈半透明阴影 使用方法很简单,新建一个WPF窗口后将窗体的基类改成上面定义...
易语言自定义信息框按钮标题源码,自定义信息框按钮标题,HookProc,MessageBox,SetDlgItemText,SetWindowsHookEx,UnhookWindowsHookEx,GetWindowLong
QT快速开发自定义标题栏示例,非常简单,使用方法如下: 1、目标窗口添加标题栏、最大化最小化关闭按钮(该步最好每次使用时,从模板程序中直接复制) 2、窗口基类从QDialog改为QFramelessDialog 3、窗口构造函数中...
说明:按钮控件属性中“其他-centralImage”为按钮中心图片...自定义精美的消息提示框:警告、错误、成功、提示、询问,一句话搞定! 并可加载Gif控件! 界面非常精美,很像360软件管家,适合作为自己的应用程序框架!