`
hyshucom
  • 浏览: 808765 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

废话不多说,直接上代码:

Java代码:

Main.java

package com.JavaTiger;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Main extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		setTheme(R.style.CustomTheme);
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
		setContentView(R.layout.main);
		getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);
		tvTitle = (TextView) findViewById(R.id.Titletext);
		tvTitle.setText("标题栏返回按钮测试界面1");

		btnBack = (Button) findViewById(R.id.TitleBackBtn);

		btnBack.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				KeyEvent newEvent = new KeyEvent(KeyEvent.ACTION_DOWN,
						KeyEvent.KEYCODE_BACK);
				onKeyDown(KeyEvent.KEYCODE_BACK, newEvent);
			}
		});

		btnNext = (Button) findViewById(R.id.Button);

		btnNext.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				Intent intent = new Intent();
				intent.setClass(Main.this, Next.class);
				startActivity(intent);
			}
		});
	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
			// 按下的如果是BACK,同时没有重复
			askForOut();

			return true;
		}

		return super.onKeyDown(keyCode, event);
	}

	private void askForOut() {
		AlertDialog.Builder builder = new AlertDialog.Builder(this);

		builder.setTitle("确定退出").setMessage("确定退出?").setPositiveButton("确定",
				new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						finish();
					}
				}).setNegativeButton("取消",
				new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						dialog.cancel();
					}
				}).setCancelable(false).show();
	}

	public TextView tvTitle;
	public Button btnBack;
	public Button btnNext;
}

注意:上面代码中红色代码的顺序,不能随便改变,一定要按照次顺序,否则会报错!

Next.java

package com.JavaTiger;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Next extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		setTheme(R.style.CustomTheme);
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
		setContentView(R.layout.next);
		getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);

		tvTitle = (TextView) findViewById(R.id.Titletext);

		tvTitle.setText("标题栏返回按钮测试界面2");

		btnBack = (Button) findViewById(R.id.TitleBackBtn);

		btnBack.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				KeyEvent newEvent = new KeyEvent(KeyEvent.ACTION_DOWN,
						KeyEvent.KEYCODE_BACK);
				onKeyDown(KeyEvent.KEYCODE_BACK, newEvent);
			}
		});
	}

	public Button btnBack;
	public TextView tvTitle;
}

xml布局文件:

style.xml

<?xml version="1.0" encoding="utf-8"?>  
<resources>  
	<style name="CustomTheme" parent="android:Theme">  
		<item name="android:windowTitleSize">40dip</item>  
	</style>  
</resources> 
title.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent"
  	android:layout_height="fill_parent">
  	<TextView
  		android:id="@+id/Titletext"   
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"   
        android:layout_alignParentLeft="true"
        android:textSize="21dp"
        android:layout_marginTop="3dp"
        android:textColor="#ffffffff"
        android:textStyle="bold"/>   
	<Button
		android:id="@+id/TitleBackBtn"
        android:layout_width="wrap_content"   
        android:layout_height="wrap_content"
        android:background="@drawable/back"
        android:gravity="center"
        android:layout_marginTop="9dp"
        android:layout_alignParentRight="true"/>
</RelativeLayout>

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
	<TextView
	    android:layout_width="fill_parent" 
	    android:layout_height="wrap_content" 
	    android:text="@string/hello"/>
	<Button
		android:text="跳转"
		android:id="@+id/Button"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"/>
</LinearLayout>
next.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
	<TextView
	    android:layout_width="fill_parent" 
	    android:layout_height="wrap_content" 
	    android:text="请按标题栏上的返回键返回上个界面"/>
</LinearLayout>

欲行效果图如下:


demo源码下载链接 TitliBarBackBtn.rar


分享到:
评论

相关推荐

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

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

    C# 自定义窗体的最大化、最小化和关闭按钮

    如何在窗体标题栏左边的控制菜单加入自己的菜单啊? 我们一般在窗口标题栏点右键 或 按Alt+空格 可以弹出那个菜单。 ------解决方案-------------------- using System.Runtime.InteropServices; [DllImport( ...

    基于JQUERY的WEB在线流程图设计器GOOFLOW

     在对结点、连线、分组区域的各种编辑操作,如新增/删除/修改名称/重设样式或大小/移动/标注时,均可捕捉到事件,并触发自定义事件,如果自定义事件执行的方法返回FALSE,则会阻止操作。  具有操作事务序列控制...

    JS 流程图 流程图插件

     顶部栏可显示流程图数据组的标题,也可提供一些常用操作按钮。  顶部栏的按钮,除了撤销、重做按钮外,其余按钮均可自定义点击事件。  可画直线、折线;折线还可以左右/上下移动其中段。  具有区域划分功能...

    delphi 开发经验技巧宝典源码

    0274 重定义去掉标题栏并最大化窗体 179 0275 使窗体一直居中 179 0276 控制窗体不可移动 180 0277 限制窗体的最大化 180 0278 使窗体自动居中 181 8.5 窗体的特殊形状 181 0279 实现窗体颜色渐变 181...

    delphi 开发经验技巧宝典源码06

    0274 重定义去掉标题栏并最大化窗体 179 0275 使窗体一直居中 179 0276 控制窗体不可移动 180 0277 限制窗体的最大化 180 0278 使窗体自动居中 181 8.5 窗体的特殊形状 181 0279 实现窗体颜色渐变 181...

    WP主题:HotNewspro 2.72

    ■ 主题很多功能都需要添加自定义栏目实现,如果在编辑页面上无自定义栏目设置面板,可以点击右上“显示选项”按钮,在显示下列项目中,勾选“自定义栏目”。 ■ 公告、相册、视频采用自定义文章发布类型功能,这是...

    70款经典Dreamweaver插件

    Scrolling_Title IE标题栏的文字滚动的效果 RefreshPageLink 建立一个刷新当前页面的链接。 quick filter 使用CSS滤镜对图片进行快速设置(右键、目标另存为) adv_random_images 这是随机显示图片的新版本,可以定制...

    Dreamweaver 插件集

    IE标题栏的文字滚动的效果 RefreshPageLink 建立一个刷新当前页面的链接。 quick filter 使用CSS滤镜对图片进行快速设置(右键、目标另存为) adv_random_images 这是随机显示图片的新版本,可以定制图片的很多相关...

    cms后台管理

    将解压后得到的jeecms-3.0.2-final文件夹下的root文件夹更名为jeecms拷贝到tomcat 安装目录下的webapps 文件夹下(例如: D:\Tomcat 6.0\webapps\),启动tomcat,在地址栏中输入http://localhost:8080/jeecms, 您...

    《程序天下:JavaScript实例自学手册》光盘源码

    13.9 标题栏显示时间 13.10 超过时间页面自动跳转 13.11 分时段问候用户 13.12 获取服务器时间 13.13 倒计时显示 13.14 背景时钟 13.15 计算某天星期几 13.16 计算时间差 13.17 计算网页停留时间 13.18 记录页面的...

    Dreamweaver 扩展

    mx142100_mmflabuttonstyles 13款Flash Button,并带有.fla的源文件 mx196756_turkeyscounties 80多个国家的一个下拉菜单 FlashImage 响应鼠标事件的图片渐显渐隐效果 real_networks 在页面中插入流式播放的Real视频...

    程序天下:JavaScript实例自学手册

    13.9 标题栏显示时间 13.10 超过时间页面自动跳转 13.11 分时段问候用户 13.12 获取服务器时间 13.13 倒计时显示 13.14 背景时钟 13.15 计算某天星期几 13.16 计算时间差 13.17 计算网页停留时间 13.18 记录页面的...

    文章管理系统

    1.关键字管理的地址栏加入自动换行,防止网址过长造成右侧会没显示 2.列表页导航分页加入超过100分页时,下拉选择自动变成文本框输入,防止下拉项太多而影响速度 3.纠正文章管理因异常栏目信息,而造成页面错误 4....

    JavaScript网页特效范例宝典源码

    实例035 动态标题栏 53 实例036 固定大小的窗口 54 1.6 框架的应用 55 实例037 框架集的嵌套 56 实例038 在网页中应用浮动框架 58 实例039 创建空白框架 60 实例040 居中显示框架页 62 1.7 无边框窗口 63 实例041 ...

    vc++ 应用源码包_1

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_2

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    这个按钮使这个对话框关闭并发出Accepted 信号的功能。下面我们将利用这个 信号。 7.修改主函数main.cpp,如下: #include #include "widget.h" #include "mydlg.h" //加入头文件 int main(int argc, char *argv[])...

    vc++ 应用源码包_6

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

Global site tag (gtag.js) - Google Analytics