標籤:android titlebar toolbar
最近項目中把一個activity的theme設成了Dialog彈出框樣式,發現標題列高度和字型都太小,於是查了相關的資料和源碼,總結了修改方法。高度是通過修改android:windowTitleSize,字型大小通過style修改。
Android程式預設的Activity標題列只能顯示一段文字,而且不能改變它的布局、顏色、標題列的高度等。如果想要在標題列加上個表徵圖、 button、輸入框、進度條、修改標題列顏色等,只能使用自訂的標題列。自訂標題列可以通過在onCreate函數中添加以下代碼來實現,需要注意的是代碼的順序必須按照下面的樣式,否則將無效。注意了,現在建議使用最新的toolbar控制項解決標題列自訂問題,其它方法都過時了。
public static void setTitle(Activity activity, int resId) { activity.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); activity.setContentView(resId); // activity的布局 activity.getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title);// 標題列的布局 }
toolbar的樣本:
<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@drawable/common_toolbar_background" android:elevation="5dp" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <TextView android:id="@+id/toolbar_title" style="@style/ToolbarTextAppearance" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"/></android.support.v7.widget.Toolbar>
雖然上面這樣可以在標題列加入一些控制項,但是仍然不能改變標題列的高度、背景色,要想達到這個目的,只能使用theme(主題)。因此往project裡 先添加一個style。改變背景色修改android:windowTitleBackgroundStyle的值,改變標題列高度則修改android:windowTitleSize的值。下面是一個樣本:
<style name="DialogTextAppearance"> <item name="android:textSize">30sp</item> <item name="android:layout_gravity">center</item> <item name="android:padding">10dp</item> </style> <style name="DialogTitleBar" parent="android:Theme.Holo.Light.Dialog"> <item name="android:windowTitleSize">60sp</item> <item name="android:windowTitleStyle">@style/DialogTextAppearance</item> </style>
修改AndroidManifest.xml檔案,找到要自訂標題列的Activity ,添加上android:theme值
<!-- 藍牙裝置 --> <activity android:name=".gprinter.BluetoothDeviceList" android:label="@string/bluetooth_device_list" android:theme="@style/DialogTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" >
android:theme值就是上面那個style.xml檔案裡定義的一個style的name值。
按照以上的步驟,修改標題列布局、高度、背景色的功能就實現了。
著作權聲明:本文為博主原創文章,轉載請保留出處http://blog.csdn.net/offbye
Android修改TitleBar標題列詳解