篇一 : 为Android窗口标题栏加入按钮或图片
在一般开发中,应用的Title都是建立应用时在AndroidManifest.xml中配置的,或是用setTitle设置的简单字符串,要是想加入按钮,图片等多个复杂的布局,请使用以下的方法
功能:把title设置成为1个字串和1个按钮的组合修改xxActivity.Java代码
public voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); //注意顺序
setContentView(R.layout.main); // 注意顺序
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,// 注意顺序
R.layout.title);
}填加title.xml代码
<?xmlversion="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=http://schemas.android.com/apk/res/android
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="text" />
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="30px"
android:tex(]t="button" />
</LinearLayout>需要注意以下几点:
注意设置顺序
requestWindowFeature要在setContentView之前
getWindow().setFeatureInit最好在setContentView之后
注意requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)不要和其它对TITLE的设置requestWindowFeature(xxxx)一起使用
4.requestWindowFeature详解
requestWindowFeature(featrueId),它的功能是启用窗体的扩展特性。
参数是Window类中定义的常量。
一、枚举常量
1.DEFAULT_FEATURES:系统默认状态,一般不需要指定
2.FEATURE_CONTEXT_MENU:启用ContextMenu,默认该项已启用,一般无需指定
3.FEATURE_CUSTOM_TITLE:自定义标题。当需要自定义标题时必须指定。如:标题是1个按钮时4.FEATURE_INDETERMINATE_PROGRESS:不确定的进度
5.FEATURE_LEFT_ICON:标题栏左侧的图标
6.FEATURE_NO_TITLE:吴标题
7.FEATURE_OPTIONS_PANEL:启用“选项面板”功能,默认已启用。
8.FEATURE_PROGRESS:进度指示器功能
9.FEATURE_RIGHT_ICON:标题栏右侧的图标
二、详解默认显示状态
图1默认1.FEATURE_CUSTOM_TITLE详解this.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);setContentView(R.layout.main);
图2无标题这是因为没设置Featrue在上面代码后加:getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.title);
图3自定义标题自定义标题完成,它是1个xml文件布局title.xml 3.FEATURE_INDETERMINATE_PROGRESS详解表示1个进程正在运行
图4标题进度条显示实现代码1.progress.xml 2.Java代码this.requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);setContentView(R.layout.main);getWindow().setFeatureInt(Window.FEATURE_INDETERMINATE_PROGRESS,R.layout.progress); setProgressBarIndeterminateVisibility(true);3.FEATURE_LEFT_ICON详解左侧显示图标
图5 实现代码this.requestWindowFeature(Window.FEATURE_LEFT_ICON);setContentView(R.layout.main);getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON,R.drawable.icon); 4.FEATURE_NO_TITLE详解 可用于全屏显示实现代码this.requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.main);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiaodongvtion/archive/2010/12/20/6086913.aspx
篇二 : Android在标题栏加按钮
Android中标题栏添加按钮
现在很多的Android程序都在标题栏上都显示了一些按钮和标题,如下图:
下面通过实例来看一下如何实现。
1、在layout下创建一个titlebtn.xml文件,内容如下:
[html] view plaincopyprint? 1. <?xml version="1.0" encoding="utf-8"?>
2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3. android:orientation="horizontal"
4. android:layout_width="fill_parent"
5. android:layout_height="fill_parent">
6.
7. <ImageButton
8. android:id="@+id/imageButton1"
9. android:layout_width="wrap_content"
10. android:layout_height="wrap_content"
11. android:background="#00000000"
12. android:layout_centerVertical="true"
13. android:layout_alignParentLeft="true"
14. android:src="@drawable/prv" />
15.
16. <TextView
17. android:layout_width="wrap_content"
18. android:layout_height="wrap_content"
19. android:layout_centerInParent="true"
20. android:text="标题栏" />
21.
22. <ImageButton
23. android:id="@+id/imageButton1"
24. android:layout_width="wrap_content"
25. android:layout_height="wrap_content"
26. android:background="#00000000"
27. android:layout_centerInParent="true"
28. android:layout_alignParentRight="true"
29. android:src="@drawable/next" />
30.
31. </RelativeLayout>
1. requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
2. setContentView(R.layout.main);
3. getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.
titlebtn);
说一下具体步骤。首先,修改标题栏的宽度和背景,在strings.xml中添加: <style name="CustomWindowTitleBackground">
<item name="android:background">@drawable/title_bg</item> </style>
<style name="test" parent="android:Theme">
<item name="android:windowTitleSize">40dp</item>
<item
name="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item>
</style>
然后修改AndroidMainfest.xml文件:
<activity android:name=".MainActivity"
android:theme="@style/test">
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
红色部分为加载Activity的theme。
接着修改MainActivity:
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.title);//自定义布局赋值
}
注意红色部分标记的3行代码,顺序不能颠倒。
最后在layout文件夹中添加title.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView android:layout_width="wrap_content"
android:layout_centerVertical=’true’
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher_email" />
<TextView android:layout_width="wrap_content"
android:layout_centerInParent="true"
android:layout_height="wrap_content"
android:text="自定义标题栏" />
</RelativeLayout>
Main.java
[java] view plaincopyprint? 1. package com.JavaTiger;
2.
3. import android.app.Activity;
4. import android.app.AlertDialog;
5. import android.content.DialogInterface;
6. import android.content.Intent;
7. import android.os.Bundle;
8. import android.view.KeyEvent;
9. import android.view.View;
10. import android.view.Window;
11. import android.view.View.OnClickListener;
12. import android.widget.Button;
13. import android.widget.TextView;
14.
15. public class Main extends Activity {
16. @Override
17. public void onCreate(Bundle savedInstanceState) {
18. <span style="color:#ff00;">setTheme(R.style.CustomTheme);
19. super.onCreate(savedInstanceState);
20. requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
21. setContentView(R.layout.main);
22. getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);</span>
23. tvTitle = (TextView) findViewById(R.id.Titletext);
24. tvTitle.setText("标题栏返回按钮测试界面1");
25.
26. btnBack = (Button) findViewById(R.id.TitleBackBtn);
27.
28. btnBack.setOnClickListener(new OnClickListener() {
29. public void onClick(View v) {
30. KeyEvent newEvent = new KeyEvent(KeyEvent.ACTION_DOWN,
31. KeyEvent.KEYCODE_BACK);
32. onKeyDown(KeyEvent.KEYCODE_BACK, newEvent);
33. }
34. });
35.
36. btnNext = (Button) findViewById(R.id.Button);
37.
38. btnNext.setOnClickListener(new OnClickListener() {
39. public void onClick(View v) {
40. Intent intent = new Intent();
41. intent.setClass(Main.this, Next.class);
42. startActivity(intent);
43. }
44. });
45. }
46.
47. @Override
48. public boolean onKeyDown(int keyCode, KeyEvent event) {
49. if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() ==
0) {
50. // 按下的如果是BACK,同时没有重复
51. askForOut();
52.
53. return true;
54. }
55.
56. return super.onKeyDown(keyCode, event);
57. }
58.
59. private void askForOut() {
60. AlertDialog.Builder builder = new AlertDialog.Builder(this);
61.
62. builder.setTitle("确定退出").setMessage("确定退出?").setPositiveButton("确
定",
63. new DialogInterface.OnClickListener() {
64. @Override
65. public void onClick(DialogInterface dialog, int which) {
66. finish();
67. }
68. }).setNegativeButton("取消",
69. new DialogInterface.OnClickListener() {
70. @Override
71. public void onClick(DialogInterface dialog, int which) {
72. dialog.cancel();
73. }
74. }).setCancelable(false).show();
75. }
76.
77. public TextView tvTitle;
78. public Button btnBack;
79. public Button btnNext;
80. }
1. package com.JavaTiger;
2.
3. import android.app.Activity;
4. import android.os.Bundle;
5. import android.view.KeyEvent;
6. import android.view.View;