Android开发怎么在4.0及以上系统中自定义TitleBar

这篇文章主要讲解了“Android开发怎么在4.0及以上系统中自定义TitleBar”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android开发怎么在4.0及以上系统中自定义TitleBar”吧!

本文将通过一个实例讲解怎么实现在4.0及以上系统版本中实现自定义TitleBar,这只是我自己找到的一种方法;

xml布局文件

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:paddingBottom="@dimen/activity_vertical_margin"     android:paddingLeft="@dimen/activity_horizontal_margin"     android:paddingRight="@dimen/activity_horizontal_margin"     android:paddingTop="@dimen/activity_vertical_margin"     tools:context=".MainActivity" >      <TextView         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="@string/hello_world" /> </RelativeLayout>

自定义的Titlebar的布局文件titlebar.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="48dp"     android:orientation="horizontal" >     <ImageView         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_gravity="center"         android:layout_weight="1.5"         android:src="@drawable/ic_action_search" />     <TextView         android:layout_width="wrap_content"         android:layout_height="48dp"         android:layout_weight="1.5"         android:paddingTop="1dp"         android:text="@string/app_name"         android:textSize="14sp" />     <EditText         android:id="@+id/searchparameter"         android:layout_width="wrap_content"         android:layout_height="48dp"         android:layout_margin="1dp"         android:layout_weight="5"         android:text="ABCDEFGHIJ"         android:textSize="14sp" />     <Button         android:id="@+id/button"         android:layout_width="wrap_content"         android:layout_height="48dp"         android:layout_margin="1dp"         android:layout_weight="2"         android:text="OK"         android:textSize="14sp" /> </LinearLayout>

为布局文件修改style.xml

此处的style.xml在values-11或者value-14中,否侧会报错:you cannot combine custom titles with other title features

<?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android">     <style name="CustomizedWindowTitleBackground">         <item name="android:background">#047BF0</item>     </style>     <style name="titlebarstyle" parent="android:Theme">         <item name="android:windowTitleSize">48dp</item>         <item name="android:windowTitleBackgroundStyle">@style/CustomizedWindowTitleBackground</item>         <!-- All customizations that are NOT specific to a particular API-level can go here. -->     </style> </resources>

在AndroidManifest.xml添加主题样式

android:theme="@style/titlebarstyle"

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="com.example.titlebardemo"     android:versionCode="1"     android:versionName="1.0" >     <uses-sdk         android:minSdkVersion="8"         android:targetSdkVersion="17" />     <application         android:allowBackup="true"         android:icon="@drawable/ic_launcher"         android:label="@string/app_name" >         <activity             android:name="com.example.titlebardemo.MainActivity"             android:label="@string/app_name"            android:theme="@style/titlebarstyle" >             <intent-filter>                 <action android:name="android.intent.action.MAIN" />                 <category android:name="android.intent.category.LAUNCHER" />             </intent-filter>         </activity>     </application> </manifest>

MainActivity.java中添加实现代码

protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);         setContentView(R.layout.activity_main);         getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,                 R.layout.titlebar);     }

代码中requestWindowFeature(Window.FEATURECUSTOMTITLE);和getWindow().setFeatureInt(Window.FEATURECUSTOMTITLE,
R.layout.titlebar);位置是固定的.

希望读者朋友们通过这个例子能够对怎么实现在4.0及以上系统版本中自定义TitleBar有深刻理解和掌握。

感谢各位的阅读,以上就是“Android开发怎么在4.0及以上系统中自定义TitleBar”的内容了,经过本文的学习后,相信大家对Android开发怎么在4.0及以上系统中自定义TitleBar这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!