本文地址:
http://blog.chinaunix.net/u/12325/showart.php?id=2360741
(C) icymoon
1. About title bar
Android的每个Activity启动时,默认都是有一个title bar的,一般用于显示程序的名称。当程序要求全屏的时候,可以隐藏这个title bar。少有人知的,却是custom title可以显示process bar,甚至开发人员还可以自定义的它的layout。
2. Examples(1) 隐藏title barrequestWindowFeature(Window.FEATURE_NO_TITLE);(2) 显示process bar可参考:development/samples/ApiDemos/src/com/example/android/apis/view/ProgressBar1.java
// Request the progress bar to be shown in the title
requestWindowFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.progressbar_1);
setProgressBarVisibility(true);
final ProgressBar progressHorizontal = (ProgressBar) findViewById(R.id.progress_horizontal);
setProgress(progressHorizontal.getProgress() * 100);
setSecondaryProgress(progressHorizontal.getSecondaryProgress() * 100);
|
|
(3) 自定义的layout可参考:development/samples/ApiDemos/src/com/example/android/apis/app/CustomTitle.java
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.xxx);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.my_title_bar);
|
(4) 在Activity运行时改动Title Bara. 删除所有的子View,看起来,title bar的内容被清空了,区域留存
((ViewGroup) getWindow().findViewById(com.android.internal.R.id.title_container)).removeAllViews();
b. 设置title bar的View为GONE,看起来,title bar被隐藏了,区域消失
((ViewGroup) getWindow().findViewById(com.android.internal.R.id.title_container)).setVisibility(View.GONE);
当然,再搞出来的话,设为View.VISIBLE就可以了。
3. 注意事项(1) requestWindowFeature()要在SetContentView()之前调用;
(2) 设置各种Feature,是具有排它性的,一旦设置,后续不可更改为别的类型;
(3) 当使用TabHost(由ActivityGroup派生)时,各个Tab里的Activity,没办法分别设置成NO_TITLE和CUSTOM_TITLE的,由于UI Framework的实现;
4. 其它
其实类似的Windows Feature还有FEATURE_CONTEXT_MENU等等,后续学到时再另外看。
[To be continued]
阅读(3327) | 评论(0) | 转发(0) |