Android 自定义标题栏
本文主要介绍如何自定义标题栏组件、自定义标题栏样式以及标题栏显示进度、全屏等小技巧 1、自定义标题栏组件比如,对于新浪微博客户端的信息菜单点击后title效果代码如下定义layout文件命名为info_title.xml<?xml version="1.0" encoding="utf-8"?><LinearLayo
本文主要介绍如何自定义标题栏组件、自定义标题栏样式以及标题栏显示进度、全屏等小技巧
1、自定义标题栏组件
比如,对于新浪微博客户端的信息菜单点击后title效果代码如下
定义layout文件命名为info_title.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns: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中
@Override
public 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);
更多推荐
所有评论(0)