`
caiwb1990
  • 浏览: 309033 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自定义窗口标题

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

步骤:
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实现了自定义窗口标题栏,非常实用,提供了窗口图标、窗口标题、最小化、最大化、关闭按钮等几个部分。可以应用到每一个窗口中去,保持每个窗口外观的一致性,同时自定义的标题栏也比系统自带的漂亮很多...

    Qt 之 自定义窗口的标题栏

    以上代码用Qt实现了自定义窗口标题栏,非常实用,提供了窗口图标、窗口标题、最小化、最大化、关闭按钮等几个部分。可以应用到每一个窗口中去,保持每个窗口外观 的一致性,同时自定义的标题栏也比系统自带的漂亮很...

    QT自定义窗口 自由拖动 自定义标题

    QT自定义窗口 自由拖动 自定义标题

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

    本资源实现了一种wpf在style中自定义标题栏无边框窗口的方法。style内部的实现其实没那么简单,尤其是实现按钮逻辑以及拖动逻辑,需要在style中关联cs代码,这就要求我们熟悉绑定技巧、附加属性还有ContentPresenter...

    WPF 自定义窗口风格,带TOOLBAR

    WindowStyle="None" ResizeMode="NoResize" 当设置无标题栏,无拖动边框时还可以拉抻窗口大小,并自制标题栏部分。 重构tabControl的header部分,使用togglebutton代替且支持图标+文字显示

    自定义窗口标题栏 关闭放大缩小隐藏

    简单窗口自定义标题栏菜单栏、包含关闭、缩小放大窗口控件、可直接使用

    C# wpf style中实现可定制的自定义标题栏

    上一章我们实现了在style中自定义标题栏,解决了复用性的问题。但是在实际使用中,还是存在一些问题的,比如有些界面需要放几个菜单在标题栏或者不需要最大化按钮等,就会变得很不灵活。这时候就需要对style进行...

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

    1、建好项目之后在它的layout文件夹下创建一个title.xml文件,作为自定义窗口标题的文件。 代码如下:&lt;?xml version=”1.0″ encoding=”utf-8″?&gt;”http://schemas.android.com/apk/res/android” android:...

    qt5 自定义标题栏

    用qt5写的自定义标题栏,做相应的改变也可以在其他版本运行,去掉了系统默认的标题栏,自己实现关闭,最大化,最小化,双击最大化最小化功能,这对标题栏的美化有帮助

    自定义winform 窗口标题栏

    自定义winform 窗口标题栏 主要代码 public partial class ZForm : Form { private bool moving = false; private Point oldMousePosition; public new FormBorderStyle FormBorderStyle { get { return ...

    更改标题栏背景并重写JFrame窗口

    对JFrame窗口进行了重写 最大最小化按钮可以改变(我用的是qq上的最大最小化按钮图标) 对JFrame进行更改 得到了自己想要的窗口 本窗口是用来做局域聊天窗口特别设计的 详细 内容 代码都有详细注释谢谢下载

    QT实现的自定义窗口框架

    一个用QT实现的自定义窗口工程,实现了窗口的拖动缩放、拖动标题移动窗口的功能。

    qt自定义标题栏文本编辑器

    qt自定义窗口标题栏,能移动和缩放,简易文本编辑器,可以把文本信息存储在图片中 。

    QT 自定义窗口

    基于QT的自定义窗口,包括标题栏定义,窗口的放大缩小拖动等, 还有最大化最小化哈

    WPF自定义窗口源码2012711

    WPF自定义窗口源码 功能介绍: 效果实现: 1.窗体的圆角 2.自定义标题栏及按钮 3.自定义状态栏 4.窗体的半透明效果 5.窗体4周有一圈半透明阴影 使用方法很简单,新建一个WPF窗口后将窗体的基类改成上面定义...

    易语言自定义信息框按钮标题

    易语言自定义信息框按钮标题源码,自定义信息框按钮标题,HookProc,MessageBox,SetDlgItemText,SetWindowsHookEx,UnhookWindowsHookEx,GetWindowLong

    QT快速开发自定义标题栏示例

    QT快速开发自定义标题栏示例,非常简单,使用方法如下: 1、目标窗口添加标题栏、最大化最小化关闭按钮(该步最好每次使用时,从模板程序中直接复制) 2、窗口基类从QDialog改为QFramelessDialog 3、窗口构造函数中...

    wpf自定义窗口

    说明:按钮控件属性中“其他-centralImage”为按钮中心图片...自定义精美的消息提示框:警告、错误、成功、提示、询问,一句话搞定! 并可加载Gif控件! 界面非常精美,很像360软件管家,适合作为自己的应用程序框架!

Global site tag (gtag.js) - Google Analytics