Android学习之自定义标题栏

一.如今好多的Android APP都在界面的顶部放置一个标题栏,标题栏里通常会有一两个按钮可用于返回和其它操作,虽然Android系统中已经给每个Activity提供了标题栏功能,但是这里介绍一下我学习到两种创建自定义标题栏的方式。
自定义标题栏的效果如下:
这里写图片描述

二.接下来就来介绍这两种方式:

  1. 引入布局的方式:
    第一步,新建一个Android Project,项目名取为Custom_titlebar,然后创建一个布局文件,为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="wrap_content"
    android:background="@drawable/title_bar1">

    <Button 
        android:id="@+id/back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dip"
        android:background="@drawable/back"/>

    <TextView 
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_weight="1"
        android:text="Hello World"/>

    <Button
        android:id="@+id/ok"
        android:layout_width="40dp"
        android:layout_height="wrap_content"
        android:layout_margin="5dip"
        android:background="@drawable/ok" />

</LinearLayout>

第二步,使用这个标题栏的布局,打开默认创建的activity_main.xml,代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <include layout="@layout/title" />

</LinearLayout>

第三步,修改默认的MainActivity类,因为是自定义标题栏,所以要把默认的标题栏去掉,代码如下:

package com.example.custom_titlebar;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;


public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏
        setContentView(R.layout.activity_main);
    }


}

部署此项目,就可以得到之前上面那幅图的效果了。

使用引入布局的方式,不管有多少布局需要添加标题栏,只需一行include语句就行了。

2.第二种方式,创建自定义控件的方式:
引入布局的方式解决了重复编写布局代码的问题,但是如果布局中有一些控件要求能够响应事件,我们还是需要在每个Activity中为这些控件单独编写一次事件注册的代码。比如,每个标题栏上有个返回按钮,在每一个Activity里的功能都是一样的,如果使用引入布局的方式,将会增加很多代码,所以,自定义控件可以解决这样的问题。

第一步,新建一个title.xml布局文件,代码同第一种方式的title.xml文件一样。

第二步,新建一个TitleLayout类,继承于LinearLayout类,让此类成为我们的自定义标题栏控件,代码如下:

package com.example.custom;

import com.example.custom_titlebar1.R;

import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;

public class TitleLayout extends LinearLayout{

    /**
     * 构造方法
     * @param context 上下文对象
     * @param attrs
     */
    public TitleLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        LayoutInflater.from(context).inflate(R.layout.title, this);//加载title.xml的布局文件
        Button back=(Button)findViewById(R.id.back);//获取title.xml布局文件中的返回按钮
        Button ok=(Button)findViewById(R.id.ok);//获取title.xml布局文件中的确认按钮

        /**
         * 添加各自的事件监听器
         */
        back.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                ((Activity) getContext()).finish();//返回上一个界面
            }
        });

        ok.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Toast.makeText(getContext(), "OK", Toast.LENGTH_SHORT).show();//显示OK的消息提示框
            }
        });
    }

}

第三步,在默认的activity_main.xml布局文件中添加此自定义标题栏控件,代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <com.example.custom.TitleLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

其中添加自定义控件要指明控件的完整类名,包名是不能省略的。

第四步,修改MainActivity类,代码同第一种方式的MainActivity类一样。

部署此项目,就可以得到之前上面那幅图的效果了,此时我们点击左边的按钮,可返回上一级界面,点击右边的按钮,将会弹出消息提示框OK。

三.我是从书上学来的,因此写篇文章积累一下,如有雷同,很正常,以上内容仅供大家学习参考,谢谢!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Android Studio中自定义标题,可以按照以下步骤进行操作: 1. 在res文件夹中创建一个新的布局文件,例如“custom_title.xml”,用于定义定义标题的布局。 2. 在AndroidManifest.xml文件中的Activity标签中添加以下属性: android:theme="@style/CustomTheme" 其中,“CustomTheme”是自定义主题的名称。 3. 在res文件夹中创建一个新的styles.xml文件,并在其中定义定义主题。例如: <style name="CustomTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item> <item name="android:windowBackground">@color/colorPrimary</item> <item name="android:colorPrimary">@color/colorAccent</item> <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item> </style> 其中,“colorPrimary”、“colorAccent”和“colorPrimaryDark”是自定义颜色的名称。 4. 在Activity的onCreate方法中使用以下代码来设置自定义标题: getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); getSupportActionBar().setCustomView(R.layout.custom_title); 其中,“custom_title”是自定义标题布局文件的名称。 5. 最后,根据需要在自定义标题布局文件中添加所需的视图元素,例如TextView、ImageView等。 以上就是在Android Studio中自定义标题的步骤。 ### 回答2: 在Android应用程序中,标题是一个非常重要的UI元素,它包含了应用程序的标识、回退按钮和其他重要的导航元素。但是,Android应用程序也允许开发者通过自定义标题来增加应用程序的可操作性和美观性。这篇文章将介绍如何通过Android Studio来自定义标题。 首先,在Android Studio中创建一个新的Android项目,选择空活动模板。然后,在XML布局中添加一个水平线性布局,它将成为自定义标题的容器。往容器中添加几个控件,比如图标、标题、搜索框等。 接下来,在java代码中找到onCreate()方法,使用以下代码来隐藏系统默认的标题: ```java getSupportActionBar().hide(); ``` 然后,在style.xml文件中创建一个新的主题,并修改样式以使应用程序的标题适应自定义标题。修改以下属性: ```xml <item name="windowActionBar">false</item> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">false</item> ``` 然后,将自定义主题应用到AndroidManifest.xml文件中的应用程序标记上。代码如下: ```xml android:theme="@style/Theme.AppCompat.Light.NoActionBar" ``` 最后但并非最不重要的是,将自定义标题添加到每个活动中。可以通过继承Activity类,并在onCreate()方法中使用以下代码添加自定义标题: ```java requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); ``` 其中,先使用`requestWindowFeature(Window.FEATURE_NO_TITLE)`代码来隐藏默认的标题,然后使用`setContentView(R.layout.activity_main)`来添加自定义布局。 综上所述,通过以上简单的步骤,即可在Android Studio中自定义标题,以使应用程序更加个性化和专业化。 ### 回答3: Android Studio是一款流行的Android开发工具,可用于创建Android应用程序。标题Android应用程序中的重要组成部分,它可以显示应用程序的名称和其他相关信息。Android Studio提供了一些内置的标题风格,但是如果您想要定制自己的标题,您可以按照以下步骤进行操作。 1.在布局文件中添加自定义标题布局。您可以使用LinearLayout、RelativeLayout或任何其他布局。在布局中添加TextView、ImageView和其他控件以显示自定义标题中希望显示的任何内容。 2.启用应用程序主题的覆盖。为了覆盖原生主题中的标题,您需要将应用程序主题的风格设置为ThemeOverlay。在styles.xml文件中添加以下代码: <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowContentOverlay">@null</item> </style> 3.将自定义标题与应用程序主题相关联。在清单文件中,将应用程序主题设置为新定义的主题。在application标记内添加以下代码: android:theme="@style/AppTheme" 4.在活动中设置另一个标题的布局。在活动的onCreate()方法中使用setContentView()方法设置自定义标题布局。例如: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_custom_title_bar); } 现在您已经成功地为您的Android应用程序创建了自定义标题。自定义标题可以使您的应用程序看起来更加专业和个性化。您可以根据自己的喜好和应用程序的要求进行处理。以上是有关Android Studio自定义标题的一些基本步骤,如果您感兴趣,建议您查阅其他资源以学习更多有关Android应用程序的开发技巧和技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值