第一行安卓代码——创建自定义控件3.4

原创 2017年02月14日 18:40:38

有时候我们会觉得系统提供的控件不能满足我们的需求。这个时候我们可以自定义控件来使用。

下面我们举个引入布局的例子。

新建title.xml

LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:id="@+id/title_back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:layout_margin="5dp"
        android:text="Back"
        android:textColor="#fff"/>
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"

        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_margin="5dp"
        android:text="Edit"
        android:textColor="#fff"/>
</LinearLayout

在activity_main.xml中加一行代码

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

然后在MainActivity中将系统自带的标题栏隐藏掉

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ActionBar actionBar = getSupportActionBar();
        if( actionBar != null) {
            actionBar.hide();
        }
    }

结果如图
这里写图片描述

现在已经解决了重复编写布局代码的问题,但是这些控件不能响应事件,怎么办呢?

使用自定义控件的方式来解决
新建TitleLayout

public class TitleLayout extends LinearLayout {
    public TitleLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        LayoutInflater.from(context).inflate(R.layout.title, this);
        Button button1 = (Button) findViewById(R.id.title_back);
        Button button2 = (Button) findViewById(R.id.title_edit);
        button1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                ((Activity)getContext()).finish();
            }
        });
        button2.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getContext(), "You clicked Edit Button", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

在布局文件中添加这个自定义控件

 <com.example.hms.a34.TitleLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"></com.example.hms.a34.TitleLayout>

ok,这样的话,每当我们在一个布局中引入TitleLayout时, 返回按钮和编辑按钮的点击事件就都已经自动实现好了,这就省去了许多编写重复代码的工作。

版权声明:本文为博主原创文章,未经博主允许不得转载。

第一行代码3.2-创建自定义控件

1、引入布局   首先创建一个LinearLayout布局,包括两个按钮、一个TextView,模仿一些软件的标题栏的风格。 ...
  • xiaoliizi
  • xiaoliizi
  • 2016年02月03日 23:26
  • 1069

duilib开发基础:创建自定义控件的过程

用Duilib开发界面时,很多情况下库自带的控件不满足需求,就需要基于Duilib建立自定义控件(自绘新的控件,或者用来封装win32的子窗体,来显示视频、网页等)。        在群里经常会有...
  • zhuhongshu
  • zhuhongshu
  • 2015年04月29日 11:44
  • 10797

iOS基础开发UI界面-xib与代码自定义控件的区别

自定义控件的方法有两种,一种是通过纯代码添加,另一种是通过添加xib文件添加.然而两种方法都可以添加,由此可以总结出两种方法的区别和步骤 一.通过代码自定义控件 1>.新建一个继承UIView...
  • box_kun
  • box_kun
  • 2016年05月14日 21:26
  • 637

duilib学习记录之创建自定义控件

用Duilib开发界面时,很多情况下库自带的控件不满足需求,就需要基于Duilib建立自定义控件(自绘新的控件,或者用来封装win32的子窗体,来显示视频、网页等)。         在群里经常会有...
  • xiaowenliuwen
  • xiaowenliuwen
  • 2016年01月13日 15:56
  • 1173

1.创建一个自定义控件

1.创建一个自定义控件 原文请看我个人博客:http://clzf.co/blog.php?id=1 这篇文章是 C#自定义控件开发 系列的第一篇文章 其实如果你看过[GDI+程序设计]这本书的话 我...
  • crystal_lz
  • crystal_lz
  • 2014年03月28日 19:49
  • 6475

Qt自定义控件的创建与初步使用

本篇博客的目的是简单介绍:创建一个用QLabel类来显示图片的自定义控件的编写。在写自定义控件的过程中遇到了很多的难题,但都慢慢解决了,本人对Qt自定义控件的认识还不深刻,做的不对的地方,还请大家指出...
  • qq_15094525
  • qq_15094525
  • 2017年01月06日 13:40
  • 1180

C#如何创建自定义控件以及添加自定义属性和事件使用

C#本身提供了很强大的控件库,但是很多控件库的功能只是一些基本的功能,就比如最简单的按钮,C#提供了最基础的按钮使用方法,但是如果要增加一些功能,比如按钮按下要一个图片,弹起要另一个图片这样的工作。当...
  • Im1smb
  • Im1smb
  • 2017年07月20日 20:31
  • 556

编写Qt Designer自定义控件(四)——使用自定义控件

接上文:编写Qt Designer自定义控件(二)——给自定义控件添加属性         控件编写完毕以后,把生成的dll和lib文件一起拷贝到Qt安装目录下的插件目录里,比如我安装在D盘里的Qt...
  • giselite
  • giselite
  • 2013年10月11日 19:47
  • 13109

MFC 自定义控件使用实践

MFC 自定义控件使用实践(1) 转载前记:说实在的,这个方法太麻烦了,我感觉最方便的方法是, 1从CWnd或者CView派生一个类, 2在对话框或者普通窗口上,定义类对象 theObj, 3在On...
  • worldy
  • worldy
  • 2013年11月15日 10:50
  • 6364

Android 自定义控件开发入门 (三)

上两次我们从如何自定义控件讲起,列举了View的一些Api,说明了一些在自定义的时候,可以进行重写的方法,然后通过一个例子的两种写法向大家展示了最基本的自定义控件和我们要充分了解并积极重写View方法...
  • sunmc1204953974
  • sunmc1204953974
  • 2014年08月11日 10:01
  • 1918
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第一行安卓代码——创建自定义控件3.4
举报原因:
原因补充:

(最多只允许输入30个字)