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

发布时间:2013-06-28 09:37:01
在一般开发中,应用的Title都是建立应用时在AndroidManifest.xml中配置的,或是用setTitle设置的简单字符串,要是想加入按钮,图片等多个复杂的布局,请使用以下的方法
 
功能:把title设置成为一个字串和一个按钮的组合
修改xxActivity.Java代码
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);   
 }  
填加title.xml代码
<?xml version="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:text="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:自定义标题。当需要自定义标题时必须指定。如:标题是一个按钮时 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自定义标题自定义标题完成,它是一个xml文件布局 title.xml 3.FEATURE_INDETERMINATE_PROGRESS详解表示一个进程正在运行
图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);