第一行安卓代码——创建自定义控件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时, 返回按钮和编辑按钮的点击事件就都已经自动实现好了,这就省去了许多编写重复代码的工作。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/TyroneRenekton/article/details/55103845

自定义控件——完全自定义控件

-
  • 1970年01月01日 08:00

自定义控件——第一行代码3.4.2

在Run出图片那一瞬间,感觉自己好幸福。。哈哈 真的,今天写的确是很简单,但是也确实很坑 大家应该一看就知道是哪一部分,我在敲完书上的代码后,运行时,项目崩溃,代码全都是一样的,但就是崩了...
  • LPL_hacker
  • LPL_hacker
  • 2017-07-30 22:58:50
  • 92

《第一行代码》学习笔记四:布局和自定义控件

一:LinearLayout,线性布局,把它所包含的控件在线性方向上依次排列。orientation有两个值,默认是horizontal,水平排列,还有一个是vertical,垂直排列。注意:,如果值...
  • qq_38167925
  • qq_38167925
  • 2018-04-22 13:35:59
  • 21

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

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

第一行代码 3.4.2 创建自定义控件 章节中初上手出项的下载完成后闪退问题和自定义控件无反应问题

关于出项下载后闪退并且打开app时也闪退的问题,主要是xml文件出错,一般情况按照书中的流程title.xml文件是没有错误的,主要原因在于 activity_main.xm了文件中,直接说代码  ...
  • qq_40712616
  • qq_40712616
  • 2017-12-11 18:36:22
  • 61

第一行安卓代码

想学习安卓的同学,以后跟帖,我会每天不定时的去更新代码,QQ群:5521238311、首先我们得搭载环境: 我这里用的是eclipse+JDK1.7 下载地址360云盘: https://yun...
  • zhenliang5553
  • zhenliang5553
  • 2016-05-27 12:27:13
  • 2999

《第一行代码》3.4自定义控件设计

   3.4.2讲的是如何创建自定义控件。但是在3.4.1所建好的UICustomViews项目的基础上,根据书本内容进行修改程序,却遇到了困难~~卡顿了半天之后终于找到原因了。(大神可以忽略,我是刚...
  • qq_39915585
  • qq_39915585
  • 2018-03-16 10:14:22
  • 14

第一行安卓代码 第2版

  • 2018年04月12日 18:51
  • 52.66MB
  • 下载

第一行安卓代码——播放视频8.4.2

与8.4.1播放音频几乎完全一样,只不过又使用了VideoView控件,不再赘述。
  • TyroneRenekton
  • TyroneRenekton
  • 2017-02-02 10:23:04
  • 370

android广播:自定义广播(第一行代码android学习)

1.标准广播 新建一个项目1,新建一个BraodcastReceiver叫BraodcastReceiver1 注册方法:       假如要用一个Button来接收广播...
  • qq_20079785
  • qq_20079785
  • 2017-09-15 20:54:04
  • 94
收藏助手
不良信息举报
您举报文章:第一行安卓代码——创建自定义控件3.4
举报原因:
原因补充:

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