本文主要介绍如何自定义标题栏组件、自定义标题栏样式以及标题栏显示进度、全屏等小技巧

1、自定义标题栏组件

比如,对于新浪微博客户端的信息菜单点击后title效果代码如下

定义layout文件命名为info_title.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent">   <TextView android:id="@+id/infoAtMeTextView"      android:layout_width="wrap_content"      android:layout_height="match_parent"      android:layout_weight="1"   android:gravity="center"  android:text="\@我" />    <TextView android:id="@+id/infoCommentTextView"      android:layout_width="wrap_content"      android:layout_height="match_parent"      android:layout_weight="1"   android:gravity="center"  android:text="评论" />    <TextView android:id="@+id/infoPrivateMsgTextView"      android:layout_width="wrap_content"      android:layout_height="match_parent"      android:layout_weight="1"   android:gravity="center"  android:text="私信" /> </LinearLayout>

在相应的activity中

@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 1. 设置标题栏样式requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);// 2. 设置activity内容setContentView(R.layout.status_list);// 3. 设置标题栏内容getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.status_list_info_title);}

其中的1. 设置标题栏样式必须在2. 设置activity之前,否则运行会报错,至于3. 设置标题栏内容则可以在最后,并且可以在后面的程序中继续修改,这样我们就可以在用户操作时动态修改标题栏自定义内容了。

关于动态修改的话,title使用的是或的方式,及效果叠加,显示第二个custom title的时候,第一个默认也会显示,如果不想显示需要手动coding隐藏 ,建议将custom title的layout文件根元素设置相应id,在java中获得该id在需要的时候setVisibility(View.VISIBLE),不需要的时候setVisibility(View.GONE)即可。有更好的方法欢迎留言,thx

ps:用户这样设置后发现自定义的layout并没有办法填充满这个标题栏,这个时候我们可以将标题栏的背景色与标题栏内容的layout背景色设置成一致,就可以认为充满整个标题栏了啊。关于如何设置标题栏背景色见下面。

2、自定义标题栏的样式

2.1、在res/value下增加style.xml用来保存标题栏的样式

<?xml version="1.0" encoding="utf-8"?><resources xmlns:android="http://schemas.android.com/apk/res/android"><style name="CustomWindowTitleBackground">       <item name="android:background">#2828FF</item></style><style name="update_status_style" parent="android:Theme">     <item name="android:windowTitleSize">30dp</item>     <item name="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item></style></resources>

2.2、在AndroidManifest.xml设置对应Activity的标题栏样式

调用上面的样式

<activity android:name=".UpdateStatusActivity"                  android:label="@string/app_name"                  android:theme ="@style/update_status_style">            <intent-filter>            <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>

关于item更多的name,参考

http://developer.android.com/guide/topics/ui/themes.html

3、标题栏显示页面加载进度,添加延时加载标志

在OnCreate中setContentView之前增加requestWindowFeature

        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);         setContentView(R.layout.update_status_activity);

在需要显示进度时,一般是操作开始时(如页面正在加载中或进程开始),设置进度条可见

setProgressBarIndeterminateVisibility(true);

在操作完成时(如页面加载或进程结束等等),设置进度条消失

setProgressBarIndeterminateVisibility(false);

其中requestWindowFeature表示改变窗口的样式。FEATURE_INDETERMINATE_PROGRESS为进度条的标志

setProgressBarIndeterminateVisibility表示设置标题栏的进度条是否可见

4、全屏

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

更多相关文章

  1. android EditText 字数监听并显示
  2. Android获得当前正在显示的activity类名的方法
  3. Android中动态设置TextView的drawableLeft和drawableRight的时候
  4. Android(安卓)RadioGroup动态添加RadioButton,设置margin
  5. Android(安卓)文本输入框 获取焦点和设置光标到末尾
  6. Android的图形与图像处理之一 使用简单图片&绘图
  7. android gallery 自定义边框+幻灯片效果
  8. Android(java)学习笔记124:Android权限大全
  9. Android(安卓)8.0以上 竖屏到横屏 返回时出现错误的解决办法

随机推荐

  1. android中国风笔记源码,金鱼游动动画源码
  2. (转帖)Android系列之浅谈Android 3D旋转
  3. android 图片的 放大 缩小 移动
  4. 使用Vitamio打造自己的Android万能播放器
  5. android Handler 机制研究学习笔记
  6. Android原生(Native)C开发之二 framebuff
  7. android BaseAdapter优化
  8. Android中图片占用内存的计算
  9. Android 事件分发机制
  10. android中的sqlite数据库加密