`

Android 自定义标题栏

 
阅读更多

本文主要介绍如何自定义标题栏组件、自定义标题栏样式以及标题栏显示进度、全屏等小技巧

 

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);
 

 

分享到:
评论

相关推荐

    android自定义标题栏

    本教程将深入探讨如何在Android中实现自定义标题栏,主要基于提供的"android自定义标题栏源码"。 首先,我们了解Android原生标题栏的局限性。原生的ActionBar或Toolbar虽然提供了基础功能,但有时不能满足个性化的...

    Android自定义标题栏

    总结,Android自定义标题栏是一项关键的UI定制技术,它让开发者能够创建符合品牌风格的界面,提升用户交互体验。通过学习和实践,我们可以熟练掌握自定义标题栏的各种技巧,包括但不限于添加菜单项、设置点击事件、...

    解决android自定义标题栏充满的问题

    这篇博客“解决android自定义标题栏充满的问题”提供了一些解决方案。 首先,我们需要了解Android布局的基本原理。在Android中,我们通常使用LinearLayout、RelativeLayout、ConstraintLayout等布局管理器来组织UI...

    android自定义标题栏(已封装)

    本文将深入探讨如何在Android中创建并封装一个自定义标题栏,参考了链接中的博客文章《Android自定义标题栏(已封装)》。 首先,我们需要了解Android系统自带的Title Bar(在API 21及以上版本被称为ToolBar),它...

    C# xamarin android自定义标题栏

    在Xamarin.Android开发中,创建自定义标题栏是提升应用用户体验和界面个性化的重要步骤。Xamarin是一个强大的跨平台开发工具,允许开发者使用C#语言构建原生的iOS、Android和Windows应用程序。本教程将深入探讨如何...

    android 自定义标题栏 CAD如何快速自定义标题栏.docx

    android 自定义标题栏 CAD如何快速自定义标题栏.docx

    Android中自定义标题栏项目源码

    在Android应用开发中,自定义标题栏是一种常见的需求,它能提供更加个性化和与应用主题相符的用户体验。本文将深入探讨如何在Android中实现自定义标题栏,包括修改其高度和修复可能出现的显示问题。 首先,我们要...

    Android自定义标题栏(并加入返回按钮)demo

    在Android应用开发中,自定义标题栏是一种常见的需求,它能提供更加个性化和与应用风格一致的用户体验。本文将深入探讨如何在Android中创建一个自定义的标题栏,并且添加一个返回按钮。我们将通过以下几个步骤来实现...

    Android自定义顶部标题栏

    Android自定义顶部标题栏Android自定义顶部标题栏Android自定义顶部标题栏Android自定义顶部标题栏Android自定义顶部标题栏Android自定义顶部标题栏Android自定义顶部标题栏Android自定义顶部标题栏Android自定义...

    android studio自定义标题栏,可自定义回退按钮事件

    在Android开发中,自定义标题栏是提升应用用户体验和界面个性化的重要手段。Android Studio作为官方推荐的集成开发环境,提供了丰富的工具和API来帮助开发者实现这一目标。本篇将详细探讨如何在Android Studio中实现...

    Android复合控件学习之自定义标题栏

    在Android应用开发中,自定义标题栏是一种常见的需求,它能帮助我们打造出具有独特风格的用户界面。本文将深入探讨如何在Android中实现自定义标题栏,并涉及自定义属性、接口回调等关键知识点。 首先,我们需要理解...

    Android 自定义标题栏 填满问题

    NULL 博文链接:https://lovezhou.iteye.com/blog/861589

    Android自定义状态栏颜色与应用标题栏颜色一致

    在Android开发中,为了让应用的用户体验更加统一和美观,有时我们需要自定义状态栏的颜色,使其与应用的标题栏颜色保持一致。在iOS系统中,这种效果很常见,但早期的Android版本并不支持这一特性。不过,从Android ...

    Android 简化 自定义标题栏

    在Android应用开发中,自定义标题栏是一种常见的需求,它能帮助我们打造出具有独特风格的用户界面。"Android简化自定义标题栏"这个主题旨在帮助开发者快速、高效地实现这一功能,无需过于复杂的代码和设计。下面将...

    Andoid自定义标题栏示例

    在Android应用开发中,...总结起来,Android自定义标题栏涉及到`Toolbar`组件的使用,包括设置图标、文字、背景颜色、高度和菜单。通过灵活地调整这些属性,开发者可以根据需求创建出符合应用风格的个性化标题栏。

Global site tag (gtag.js) - Google Analytics