安卓学习随笔 -- 自定义标题栏

在安卓中不喜欢系统默认的标题栏,那么如何让自定义一个自己的标题栏呢。

自定义后的标题栏如下:

首先这里需要定义一个自定义的标题栏布局 title.xml文件 (里边需要两个图片这个很简单)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="50dp"       <!-- 新的 标题栏的 高度-->
    android:background="#f2f8f8">
      <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="20dp"
        android:src="@drawable/lbt" />

      <TextView
          android:layout_centerInParent="true"
          android:layout_width="wrap_content"
          android:layout_height="match_parent"
          android:text="自定义标题栏"
          android:textSize="20sp"
          android:gravity="center_vertical"
          />
    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_centerInParent="true"
        android:layout_alignParentRight="true"
        android:layout_marginRight="20dp"
        android:src="@drawable/rbt" />

</RelativeLayout>  

然后再MainActivity中声明使用自定义的标题栏

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//声明使用自定义的标题栏
		requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
		setContentView(R.layout.activity_main);
		//使用自定义的标题栏
		getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);
	}

}

接下来我们再来设置标题栏的高度 以及 处理两侧没有完全覆盖原始标题栏的bug,这时 我们需要在定义一个style文件 MyStyle.xml

在自定义标题栏中经常回遇到没有填充完全的效果如下图:

MyStyle.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="titleBarStyle" parent="android:Theme">
     <item name="android:windowTitleSize">50dp</item><!-- 原始标题栏的高度 -->
     <item name="android:padding">0dp</item><!-- 使新的标题栏完全延伸到对齐到原始标题栏的两边 -->
</style>
</resources>

然后呢 在 AndroidManifest.xml 中给activity 添加 一个theme属性

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mytitle"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
         android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.mytitle.MainActivity"
             android:label="@string/app_name"
            android:theme="@style/titleBarStyle">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

在一样中 有两处给标题栏添加了高度设置,一个是原始的标题栏高度,一个是自定义标题栏的高度。一般设为两个相等。不然或者自定义的标题栏只占用了原始标题栏的上部分。或者只显示了自定义标题栏的上部分。

到这里基本就修改完成了。

源码下载地址:http://download.csdn.net/detail/liuhenghui5201/7644123

安卓学习随笔 -- 自定义标题栏,布布扣,bubuko.com

时间: 2024-12-25 08:05:29

安卓学习随笔 -- 自定义标题栏的相关文章

安卓自定义标题栏

在一般开发中,应用的Title都是建立应用时在AndroidManifest.xml中配置的,或是用setTitle设置的简单字符串,要是想加入按钮,图片等多个复杂的布局,请使用以下的方法 功能:把title设置成为一个字串和一个按钮的组合 修改xxActivity.Java代码                public void onCreate(Bundle savedInstanceState) {                             super.onCreate(s

安卓学习-界面-View的自定义

android的所有UI控件,都是基于View的,因此特意重点学习了下这个,为后面学习其他控件打下基础. http://www.360doc.com/content/14/0102/12/12050012_342019150.shtml 重新时常用覆盖的方法 package com.example.ddddddd; import android.content.Context; import android.graphics.Canvas; import android.graphics.Rec

安卓开发-自定义标题栏

一个接着一个的activity,写啊写,调啊调,后来,终于发觉,activity的标题栏好难看,好单调啊.咱们为了吸引用户的眼球,得搞点个性化的东西. 自定义标题栏的方法,网上一搜一大堆,我也稍微提一下,oncreate中加上如下代码就行: Java代码 requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(view); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_T

android 自定义标题栏

今天来看一下如何通过组合多个控件实现自定义标题栏 众所周知,标题栏是应用中必不可少的控件,为了避免多次重写,将其封装起来,供每个布局调用即可. 这里我们采用经典的左中右布局,也可以根据项目需要自行调整,比如在右侧再加一个控件,或者将标题偏左都可以 注:其中应用到了上一篇文章中的ButtonM控件,大家可以先简单了解一下. 还是先来看一下效果图:    图一 初始状态                                         图二 按下了右侧的搜索按钮 下面来看代码实现,共四

微信小程序 自定义标题栏

微信小程序可以设置自定义标题栏,可以针对不同页面单独设置1. 在页面文件 .json 文件中,设置如下属性,自定义导航栏 和 导航栏样式"navigationStyle": "custom","navigationBarTextStyle": "white", 特别是第二个 navigationBarTextStyle 属性 可以将胶囊样式调整为透明效果 2. 设置自定义导航栏布局 样式 动效逻辑等 3. 划重点!!!导航栏中

安卓学习-界面-布局-RelativeLayout

RelativeLayout相对布局,所有内部的组件都是相对的 XML属性 XML属性 函数 说明 android:gravity setGravity 内部组件的对其方式 android:ignoreGravity setIgnoreGravity 设置哪个组件不受Gravity影响 RelativeLayout.LayoutParams用来设置内部组件的对齐方式 XML属性 说明 android:layout_centerHorizontal 水平居中 android:layout_cent

安卓学习第13课——BaseAdapter

BaseAdapter创建这么一个对象,需要些四个方法. int getCount(); Object getItem(int position); long getItemId(int position);View getView(int position, View convertView, ViewGroup parent);(1)列表中的项数(2)返回值的列表内容(3)获得postion处的列表项的ID(4)该列表项里的组件 package com.example.baseadapter

MySQL学习笔记-自定义函数

MySQL学习笔记-自定义函数 1.自定义函数简介 自定义函数:用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同 自定义函数的两个必要条件:(1)参数  (2)返回值 自定义函数: 创建自定义函数 CREATE FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} routine_body 关于函数体: 1.函数体可以由合法的SQL语句构成: 2.函数体可以是

JavaWeb学习随笔

Servlet学习随笔 1.HttpServlet init(ServletConfig)------Servlet生命周期中的初始方法,默认情况是服务器创建后第一次访问这个Servlet时调用,可以修改配置信息,使其在服务器一创建时就被调用; 修改配置信息的方法-----在web.xml的<servlet>下添加<load-on-startup>x<load-on-startup>,x是正整数,越小表示优先级越高 url路径的配置,完全匹配>目录匹配>(.