仿新浪微博2014之主界面二(自定义标题栏)

2024-03-15 05:40

本文主要是介绍仿新浪微博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之主界面二(自定义标题栏)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/810976

相关文章

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

SpringBoot 自定义消息转换器使用详解

《SpringBoot自定义消息转换器使用详解》本文详细介绍了SpringBoot消息转换器的知识,并通过案例操作演示了如何进行自定义消息转换器的定制开发和使用,感兴趣的朋友一起看看吧... 目录一、前言二、SpringBoot 内容协商介绍2.1 什么是内容协商2.2 内容协商机制深入理解2.2.1 内容

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

ZOJ Monthly, August 2014小记

最近太忙太忙,只能抽时间写几道简单题。不过我倒是明白要想水平提高不看题解是最好的了。 A  我只能死找规律了,无法证明 int a[50002][2] ;vector< vector<int> > gmax , gmin ;int main(){int n , i , j , k , cmax , cmin ;while(cin>>n){/* g

2014 Multi-University Training Contest 8小记

1002 计算几何 最大的速度才可能拥有无限的面积。 最大的速度的点 求凸包, 凸包上的点( 注意不是端点 ) 才拥有无限的面积 注意 :  凸包上如果有重点则不满足。 另外最大的速度为0也不行的。 int cmp(double x){if(fabs(x) < 1e-8) return 0 ;if(x > 0) return 1 ;return -1 ;}struct poin

2014 Multi-University Training Contest 7小记

1003   数学 , 先暴力再解方程。 在b进制下是个2 , 3 位数的 大概是10000进制以上 。这部分解方程 2-10000 直接暴力 typedef long long LL ;LL n ;int ok(int b){LL m = n ;int c ;while(m){c = m % b ;if(c == 3 || c == 4 || c == 5 ||

2014 Multi-University Training Contest 6小记

1003  贪心 对于111...10....000 这样的序列,  a 为1的个数,b为0的个数,易得当 x= a / (a + b) 时 f最小。 讲串分成若干段  1..10..0   ,  1..10..0 ,  要满足x非递减 。  对于 xi > xi+1  这样的合并 即可。 const int maxn = 100008 ;struct Node{int

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。