<?xmlversion="1.0" encoding="utf-8"?>
<resources>
<style name="titlebarstyle"parent="Android:Theme">
<item name="android:windowTitleSize">38dip</item>
</style>
</resources>
上面<item name="android:windowTitleSize">39dip</item>这一句,就是用来设定Titlebar的高度的。
6. 在上面的基础上,我们需要修改AndroidManifest.xml中,相应Activity的属性。如下:
<?xmlversion="1.0" encoding="utf-8"?>
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="com.pat.customizetitlebar"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon"android:label="@string/app_name">
<activity android:name=".CustomizeTitlebar"
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>
<uses-sdk android:minSdkVersion="8"/>
</manifest>
注意粗体字是新增上去的,其中的titlebar是在第5步中增加的。现在来看看运行结果:
可以看到结果完全符合了我们的要求。
7. 我们还可以改变Titlebar的背景颜色。为此我们修改前面的styles.xml,使之如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomizedWindowTitleBackgroundColor">
<item name="android:background">#047BF0</item>
</style>
<style name="titlebarstyle" parent="android:Theme">
<item name="android:windowTitleSize">38dip</item>
<item name="android:windowTitleBackgroundStyle">@style/CustomizedWindowTitleBackgroundColor</item>
</style>
</resources>
注意,其中的粗体字是新增加的。
项目其他文件,均无需变动。运行结果如下:
8. 最后,我们以OK按钮为例来测试Titlebar上的控件的事件响应。为此,修改CustomizeTitlebar.java,使之如下:
public class CustomizeTitlebar extends Activity
implements
OnClickListener
{
private Button button;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(this);
}
public voidonClick(View v)
{
if(v.getId() == R.id.button)
{
Toast.makeText(this, "OK button in Titlebar clicked...", Toast.LENGTH_LONG).show();
}
}
}
粗体字部分是新增加的代码。重新运行本项目,等界面出来后,点击Titlebar上的OK按钮,将出现:
这说明,Titlebar上自己增加上去的控件,可以很好地响应相关的事件。