本文主要是介绍仿新浪微博2014之主界面二(自定义标题栏),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
为了实现标题栏的个性化,我们经常要根据不同的界面自定义自己的标题栏,首先我们需要在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作如下设置
<activityandroid:name="com.xhq.xweibo.ui.TabHostActivity"android:theme="@style/tabhost"android:label="@string/title_activity_tab_host" ></activity>
把主体theme设为我们自定义的主题。这样我们就完成了自定义标题栏。效果图如下:
这篇关于仿新浪微博2014之主界面二(自定义标题栏)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!