仿新浪微博2014之主界面二(自定义标题栏)
来源:互联网 发布:编程会让电脑死机么 编辑:程序博客网 时间:2024/05/16 12:57
为了实现标题栏的个性化,我们经常要根据不同的界面自定义自己的标题栏,首先我们需要在activity或者fragment的oncreate函数中setContentView之前添加
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView之后添加
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_more);
由于我们要根据不同的fragment设置不同的标题栏,requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);放在TabHostActivity的oncreate中,
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_more);放在fragment的oncreate中。
代码如下:
package com.xhq.xweibo.ui;import com.xhq.xweibo.R;import com.xhq.xweibo.R.layout;import com.xhq.xweibo.R.menu;import android.os.Bundle;import android.app.Activity;import android.support.v4.app.Fragment;import android.util.Log;import android.view.LayoutInflater;import android.view.Menu;import android.view.View;import android.view.ViewGroup;import android.view.Window;public class TabMoreFragment extends Fragment{private static final String TAG = "TabMoreFragment";private Activity mActivity;private View mTitleView;public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);Log.d(TAG, "onCreate");mActivity = this.getActivity();mActivity.getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_more);mTitleView = mActivity.findViewById(R.id.title_more);mTitleView.setVisibility(View.GONE);}@Overridepublic void onViewCreated(View view, Bundle savedInstanceState){super.onViewCreated(view, savedInstanceState);Log.d(TAG, "onViewCreated");mTitleView.setVisibility(View.VISIBLE);}@Overridepublic void onDestroyView(){super.onDestroyView();Log.d(TAG, "onDestroyView");mTitleView.setVisibility(View.GONE);}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){return inflater.inflate(R.layout.fragment_tab_more, null);}}
我们要在fragment的onViewCreated中把自定义的标题栏布局显示出来,在onDestroyView中把标题布局隐藏起来,如果不隐藏起来的话多个标题栏布局就会重叠在一起了。
这样我们就显示了自定义的标题栏了,但是这样还不够,因为我们还无法调整标题栏的高度和背景。
我们还要自定义标题栏的高度和背景,我们要写两个风格
<style name= "CustomWindowTitleBackground"> <item name="android:background">@drawable/title_bg</item> </style> <style name="tabhost" parent="android:Theme"> <item name="android:windowTitleSize">40dp</item> <item name="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item> </style>
然后再manifest中activity作如下设置
<activity android:name="com.xhq.xweibo.ui.TabHostActivity" android:theme="@style/tabhost" android:label="@string/title_activity_tab_host" > </activity>
把主体theme设为我们自定义的主题。这样我们就完成了自定义标题栏。效果图如下:
- 仿新浪微博2014之主界面二(自定义标题栏)
- 仿新浪微博2014之登陆界面二(异步加载图片和缓存)
- 仿新浪微博2014之登陆界面二(异步加载图片和缓存)
- 仿新浪微博2014之主界面一(Fragment+FragmentTabHost+FragmentActivity)
- 仿新浪微博2014之登陆界面一(sqlite操作)
- 仿新浪微博2014之登陆界面三(授权认证Oauth2.0)
- 仿新浪微博2014之登陆界面四(总体功能)
- Android ProgressBar 自定义样式(二),仿原来新浪微博图片加载样式
- android界面之自定义标题栏
- Qt之自定义界面(添加自定义标题栏)
- 【Qt】Qt之自定义界面(添加自定义标题栏)【转】
- Android仿新浪微博欢迎界面的实现
- 仿新浪微博加号弹出界面动画
- 仿新浪微博
- 仿新浪微博
- 仿新浪微博
- iOS 自定义TabBar(仿新浪微博TabBar)
- Android 自定义view-仿新浪微博#话题#插入EditText
- C#几个小程序(convert转换,几周几天,几天几时几分几秒,闰年)
- 清明作业
- 常见HTTP Status 总结
- 公务员||程序员的人生如此惨淡
- 非阻塞IO 和阻塞IO
- 仿新浪微博2014之主界面二(自定义标题栏)
- leetcode系列(3)Spiral Matrix II
- linux网络编程十六:I/O复用的应用-poll简单实现聊天室程序
- 第一篇博客
- 【二分】Search in Rotated Sorted Array
- poj1703
- 一般物体检测--Binarized Normed Gradients for Objectness Estimation at 300fps
- 黑马程序员 新建Web网站与新建Web应用程序的区别
- HDOJ 1686 Oulipo