android 修改窗体标题的字体式样和背景图(自定义标题栏)

    技术2026-05-03  2

    今天google了一下,关于android自定义窗体标题栏的问题,

    解决方法大概如下:

        自定义一个layout,然后通过requestWindowFeature和getWindow().setFeatureInt方法调用,

        但是存在填充不满的问题,而且比较麻烦。

     

    但是,我只是想改变标题栏字体的大小、颜色,并设置一个背景图片,并不想定义一个layout的xml文件。

    那么,android有没有提供解决上述问题的方法呢,答案是肯定的,一定可以。

    默认的标题栏式样太难看了,灰不啦吉的。

     

    后来参考了一篇洋人博友的文章,最终有所收获。

    http://zaman91.wordpress.com/2010/03/18/android-how-to-customize-default-themes-and-styles/

     

    具体的操作步骤是:

    1、在res/values添加styles.xml文件。

         .在eclipse中,选择File -> New -> Other菜单

         .在弹出窗口中,选择Android/Android XML File,点击 Next

         .在添加XML窗口中,输入文件名"styles.xml",选中Values,

           输入文件夹路径"/res/values"

         .然后点击 Finish

     

    2、在res/values添加themes.xml文件。

        操作方法同步骤1,只是文件名输入"themes.xml"

     

    3、styles.xml文件的代码

        <?xml version="1.0" encoding="utf-8"?> <resources xmlns:adnroid="http://schemas.android.com/apk/res/android"> <style name="CustomWindowTitleBackground" parent="android:WindowTitleBackground"> <item name="android:background">@drawable/bg</item> </style> <style name="CustomWindowTitle" parent="android:WindowTitle"> <item name="android:textAppearance">@style/CustomWindowTitleText</item> </style> <style name="CustomWindowTitleText" parent="android:TextAppearance.WindowTitle"> <item name="android:textColor">#00f</item> <item name="android:textSize">14sp</item> <item name="android:textStyle">bold</item> </style> </resources>

     

    4、themes.xml文件的代码

    <?xml version="1.0" encoding="utf-8"?> <resources xmlns:adnroid="http://schemas.android.com/apk/res/android"> <style name="titleTheme" parent="android:Theme" > <!-- <item name="android:windowTitleSize">30dp</item> --> <item name="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item> <item name="android:windowTitleStyle">@style/CustomWindowTitle</item> </style> </resources>

     

    5、修改工程的Manifest.xml文件

         .在Activity中加入android:theme="@style/titleTheme"即可

    <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.customtitle" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".CustomTitle" android:label="@string/app_name" android:theme="@style/titleTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="9" /> </manifest>

     

    6、效果图

     

    说明:

        .关于@drawable/bg,它是title的背景图. bg.png格式。

          直接在res目录下创建修文件夹drawable及文件bg.png即可。

        .个人感觉,android的所有style和theme都是可以继承并且修改的。

     

    关于style和theme的详细,可以查看一下的参考资料。

    http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=core/res/res/values/styles.xml

    http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=core/res/res/values/themes.xml

    最后,提供一下源代码,希望大家帮助大家。

    竟让没有找到上传代码的地方,如果需要的源代码话,请在评论中留下mail地址。

    最新回复(0)