【Android】39、引入布局

本篇博文最后修改时间:2016年8月8日,23:21


一、简介

本篇介绍如何引入布局


二、实验平台
系统版本:Windows7 家庭普通版 32位操作系统。

三、版权声明
博主:思跡
声明:喝水不忘挖井人,转载请注明出处。
原文地址:http://blog.csdn.net/omoiato

联系方式:315878825@qq.com

Java零基础入门交流群:541462902


四、创建自定义控件

1、View和ViewGroup

我们所用的所有控件都是直接或间接继承自View的,

所用的所有布局都是直接或间接继承自ViewGroup 的。


View 是Android 中一种最基本的UI 组件,

它可以在屏幕上绘制一块矩形区域,并能响应这块区域的各种事件,

因此,我们使用的各种控件其实就是在View 的基础之上又添加了各自特有的功能。


ViewGroup 则是一种特殊的View,

它可以包含很多的子View 和子ViewGroup,

是一个用于放置控件和布局的容器。

这个时候我们就可以思考一下,

如果系统自带的控件并不能满足我们的需求时,

可不可以利用上面的继承结构来创建自定义控件呢?

答案是肯定的,下面我们就来学习一下创建自
定义控件的两种简单方法。

先将准备工作做好,创建一个UICustomViews 项目。


2、引入布局

①什么是标题栏

如果你用过iPhone 应该会知道,几乎每一个iPhone 应用的界面顶部都会有一个标题栏,
标题栏上会有一到两个按钮可用于返回或其他操作(iPhone 没有实体返回键)。

现在很多的Android 程序也都喜欢模仿iPhone 的风格,在界面的顶部放置一个标题栏。

虽然Android 系统已经给每个活动提供了标题栏功能,但这里我们仍然决定不使用它,

而是创建一个自定义的标题栏。


②创建标题栏布局
经过前面两节的学习,我想创建一个标题栏布局对你来说已经不是什么困难的事情了,
只需要加入两个Button 和一个TextView,然后在布局中摆放好就可以了。


③用引入布局解决多个标题栏导致代码重复问题

可是这样做却存在着一个问题,一般我们的程序中可能有很多个活动都需要这样的标题栏,

如果在每个活动的布局中都编写一遍同样的标题栏代码,明显就会导致代码的大量重复。

这个时候我们就可以使用引入布局的方式来解决这个问题。

新建一个布局title.xml,代码如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/title_bg" >


    <Button
        android:id="@+id/title_back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="5dip"
        android:background="@drawable/back_bg"
        android:text="Back"
        android:textColor="#fff" />


    <TextView
        android:id="@+id/title_text"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:gravity="center"
        android:text="Title Text"
        android:textColor="#fff"
        android:textSize="24sp" />


    <Button
        android:id="@+id/title_edit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="5dip"
        android:background="@drawable/edit_bg"
        android:text="Edit"
        android:textColor="#fff" />

</LinearLayout>




 

可以看到,我们在LinearLayout 中分别加入了两个Button 和一个TextView,

左边的Button可用于返回,右边的Button 可用于编辑,中间的TextView 则可以显示一段标题文本。

上面的代码中大多数的属性都已经是见过的,下面来说明一下几个之前没有讲过的属性。

android:background

android:background 用于为布局或控件指定一个背景,可以使用颜色或图片来进行填充,

这里我提前准备好了三张图片,title_bg.png、back_bg.png 和edit_bg.png,

分别用于作为标题栏、返回按钮和编辑按钮的背景。

 

android:layout_margin

另外在两个Button 中我们都使用了android:layout_margin 这个属性,

它可以指定控件在上下左右方向上偏移的距离,

当然也可以使用android:layout_marginLeft或android:layout_marginTop 等属性

来单独指定控件在某个方向上偏移的距离。

现在标题栏布局已经编写完成了,剩下的就是如何在程序中使用这个标题栏了,

修改activity_main.xml 中的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <include layout="@layout/title" />
</LinearLayout>


没错!我们只需要通过一行include 语句将标题栏布局引入进来就可以了。
最后别忘了在MainActivity 中将系统自带的标题栏隐藏掉,代码如下所示:

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 语句就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值