第一行安卓代码——创建自定义控件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,模仿一些软件的标题栏的风格。 ...

第一行代码系列第三章——自定义布局

1效果图 title布局代码:

第一行安卓代码——最常用和最难用的控件——ListView3.5

ListView介绍ListView是Android中最常用的控件之一,几乎所有的应用程序都会用到它。由于手机屏幕空间都有限,能够一次性在屏幕上显示的内容并不多,当我们的程序中有大量的数据需要展示的时...

安卓自定义控件基础代码

  • 2016年05月08日 00:25
  • 1.32MB
  • 下载

《第一行代码》学习笔记-- 基础的自定义标题控件的定义和使用

Android中实现仿iPhone风格标题栏的自定义控件。

安卓Android自定义控件:200行代码实现一个简约时钟

一个简约而不无乐趣的时钟控件

安卓经典效果组件篇6——自定义底部Tab控件

最近用到了底部的tab控件,便仔细看了一下,写了一个例子,先

安卓自定义控件——标题栏的复用

一贯作风,先看效果图,再实现 编写自定义属性文件atts.xml,自定义属性中涉及到的属性有左右两边的button的背景图,中间标题的内容,字体大小,字体颜色。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第一行安卓代码——创建自定义控件3.4
举报原因:
原因补充:

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