文档章节

自定义Android标题栏TitleBar布局

程序袁_绪龙
 程序袁_绪龙
发布于 2014/10/08 17:30
字数 573
阅读 6242
收藏 5
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.main); //软件activity的布局 getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar); //titlebar为自己标题栏的布局

Layout下建立titlebar.xml:

复制代码
<?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:layout_gravity="center_vertical" android:orientation="horizontal" > <Button android:id="@+id/back" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/back" android:textSize="18sp" android:textColor="#FF0000FF" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/share" android:textSize="18sp" android:textColor="#FFFFFF00" /> </LinearLayout>
复制代码
这样虽然可以在一定程度上定制标题栏, 不过, 这里无法改变标题栏的高度和背景(背景设置之后会在两端有两个
非常难看的边框). 据说, 原因是android 固有的.
这里有修改方法:
  原理是这样的. 直接像上述代码那样添加title仅仅是把一个子界面添加到原有的title上的, 并没有改变原来的属性,
比如 标题栏大小, 标题栏背景. 这些需要在theme 主题里面定义.
  因此先定义一个style, 若修改背景请修改android:windowTitleBackgroundStyle
  若修改标题栏高度,请修改android:windowTitleSize
复制代码
例子: <?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="CustomWindowTitleBackground"> <item name="android:background">#565656</item> </style> <style name="test" parent="android:Theme"> <item name="android:windowTitleSize">50dp</item> <item name="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item> </style> </resources>
复制代码
在程序的android manifest.xml中对应:
  activity中添加属性 android:theme = "@style/test" 就可以了
复制代码
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.guardian" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name" > <activity android:name=".Guardian" android:label="@string/app_name" android:theme = "@style/test" //就在这里 > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="4" /> </manifest>
复制代码
之后借助于设置自定义的标题栏xml文件,就可以自定义标题栏布局了

© 著作权归作者所有

共有 人打赏支持
程序袁_绪龙
粉丝 99
博文 242
码字总数 66750
作品 0
普陀
程序员
私信 提问
android如何阻止app_name在标题栏中闪现

常见自定义titlebar的方法是在values文件夹中新建一个我们自己的titlebar主题,例如:  然后在manifest文件中为activity添加自定义主题,

华宰
2011/09/06
2.5K
0
Window attributes属性详解

以下属性以Dialog为例来讲解: <item name="windowBackground"> 窗体的背景 </item> <item name="windowFrame">Dialog 是否有边框 </item> <item name="windowNoTitle">窗体是否有标题</ite......

TedYin
2013/11/22
0
0
Android 透明(沉浸式)状态栏设计

一.透明(沉浸式)状态栏设计 通过第三方代码实现透明状态栏的主要代码如下。 用法如下 注意:状态栏透明可能导致布局向上便宜,所以需要设置根布局的android:fitsSystemWindows="true" 二....

IamOkay
2015/01/20
0
0
糊里糊涂学Android(2)——Activity隐藏标题及全屏

在大部分情况下,我们开发或使用的App都不需要Activity中原本的标题,都有自己独特或个性的标题栏,甚至有些App是全屏的。下面就来探究一下都有哪几种方法可以实现隐藏标题或全屏。 1.修改A...

笑缘心归
2014/03/17
0
0
Android开发优化之——对界面UI的优化(2)

在一个应用程序中,一般都会存在多个Activity,每个Activity对应着一个UI布局文件。一般来说,为了保持不同窗口之间的风格统一,在这些UI布局文件中,几乎肯定会用到很多相同的布局。如果我们...

KingMing
2015/04/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Centos7 防火墙 firewalld 实用操作

摘要: 一.前言 Centos7以上的发行版都试自带了firewalld防火墙的,firewalld去带了iptables防火墙。其原因是iptables的防火墙策略是交由内核层面的netfilter网络过滤器来处理的,而firewal...

阿里云官方博客
26分钟前
2
0
Python venv简单使用——创建虚拟环境

1.首先,我们先在项目目录下,输入: python3 -m venv xxx xxx指你要创建的文件名。因为在执行这行命令之后,就会把与Python虚拟环境有关的文件放到xxx里面。 2.然后只需要运行这个里面的act...

littlemesieV
35分钟前
0
0
spring常用配置

Spring常用配置示例Spring 是一款Java平台的开源框架,是为解决企业级应用程序开发的复杂性而创建的,通过良好的分层架构让开发人员能够专注于业务逻辑的开发。Spring框架是一个分层架...

小橙子的曼曼
37分钟前
1
0
Docker安装Jenkins

Docker安装Jenkins docker pull jenkins/jenkins:lts sudo chown -R 1000:1000 jenkins/ sudo docker run -itd -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true -v /home/wwx......

吴伟祥
37分钟前
0
0
java运算符 与(&)、非(~)、或(|)、异或(^)

最近看HashMap源码,遇到了这样一段代码: 1 static final int hash(Object key) {2 int h;3 return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);4 ......

孟飞阳
47分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部