仿新浪微博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设为我们自定义的主题。这样我们就完成了自定义标题栏。效果图如下:

  

0 0
原创粉丝点击