您的位置:首页 > 其它

修改标题栏的高度

2013-02-18 15:10 204 查看

修改标题栏的高度

01
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
02
android:orientation
=
"vertical"
03
android:fitsSystemWindows
=
"true"
>
04
<
FrameLayout
android:id
=
"@android:id/title_container"
05
android:layout_width
=
"match_parent"
06
android:layout_height
=
"?android:attr/windowTitleSize"
07
style
=
"?android:attr/windowTitleBackgroundStyle"
>
08
</
FrameLayout
>
09
<
FrameLayout
android:id
=
"@android:id/content"
10
android:layout_width
=
"match_parent"
11
android:layout_height
=
"0dip"
12
android:layout_weight
=
"1"
13
android:foregroundGravity
=
"fill_horizontal|top"
14
android:foreground
=
"?android:attr/windowContentOverlay"
/>
15
</
LinearLayout
>
通过以上文档我们可知,title_container(标题栏)的高度由attr--windowTitleSize决定。所以改变windowTitleSize 可以改变高度。如下代码:

01
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
02
<
resources
xmlns:android
=
"http://schemas.android.com/apk/res/android"
>
03
<
style
name
=
"CustomWindowTitleBackground"
>
04
   
<
item
name
=
"android:background"
>#565656</
item
>
05
</
style
>
06
<
style
name
=
"test"
parent
=
"android:Theme"
>
07
 
<
item
name
=
"android:windowTitleSize"
>50dp</
item
>
//改变标题栏的高度
08
 
<
item
name
=
"android:textSize"
>10dp</
item
>
//改变文件大小
09
 
<
item
name
=
"android:windowTitleBackgroundStyle"
>@style/CustomWindowTitleBackground</
item
>
10
</
style
>
11
</
resources
>
1
<
application
android:icon
=
"@drawable/icon"
android:label
=
"@string/app_name"
>
2
<
activity
android:name
=
".TitleButton"
3
  
android:label
=
"@string/app_name"
4
  
android:theme
=
"@style/test"
>
android:theme ="@style/test"改变了主题,这样因为test中用到了<item name="android:textSize">10dp</item>
所以默认所有的文字都是这么大小,除非在相应View中,textSize 重新被修改,或者所在Activity的主题中重新设定此值。

很多网友发现自己Android程序的标题栏TitleBar区域很单调,如果想个性化一些可以通过下面的方法来为自己软件的标题定制一个layout布局文件,比如浏览器的标题栏,它包含了网站的Favicon,自定义的进度条,和不确定的进度指示等等,实现的方法自己控制吧。下面代码在onCreate中使用,同时顺序不要改变,否则将无法生效:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

setContentView(R.layout.main); //软件activity的布局

getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar); //titlebar为自己标题栏的布局

这样虽然可以在一定程度上定制标题栏, 不过, 这里无法改变标题栏的高度和背景(背景设置之后会在两端有两个非常难看的边框).
据说, 原因是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文件,就可以自定义标题栏布局了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: