为Android窗口标题栏加入按钮或图片

篇一 : 为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中标题栏添加按钮

355154_0.jpg

现在很多的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>

355154_1.jpg

355154_2.jpg

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. }

355154_3.jpg

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;

转载于:https://my.oschina.net/dccjll/blog/1036537

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值