• 安卓学习(三)


    制作一个简单的自定义控件

    1、制作一个控件的xml样式。这里我们要做出一个标题控件,包含三个基础控件,两个button,一个TextView,第一个button在最左端,TextView在中间,另一个button在右边。大致功能“返回(退出)--标题内容---编辑(或其他)”。XML如下:(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="match_parent">
    
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btnBac"
        android:gravity="center"
        android:text="Back"/>
    
    <TextView
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:id="@+id/text"
        android:text="标题"
        android:gravity="center"
        android:layout_weight="1"/>
    
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:id="@+id/btnEdit"
        android:text="Edit"/>
    </LinearLayout>
    

    2、编写控件的逻辑代码,新建.java文件,进行针对title.xml中LinearLayout布局的重写,并添加控件功能代码。(TitleLayout.java)

      通过构造函数实现TitleLayout控件的样式加载,关联title.xml,并给布局中的两个button赋予逻辑。

    package com.example.dingshuo.uitest;
    
    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;
    
    /**
     * Created by DINGSHUO on 2015/6/8.
     */
    public class TitleLayout extends LinearLayout {
    public TitleLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        LayoutInflater.from(context).inflate(R.layout.title, this);
    
        Button btnBack=(Button)findViewById(R.id.btnBac);
        Button btnEdit=(Button)findViewById(R.id.btnEdit);
    
        btnBack.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                ((Activity) getContext()).finish();
            }
        });
    
    
        btnEdit.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getContext(),"你点击了Edit按钮",Toast.LENGTH_SHORT).show();
            }
        });
    }
    }
    

    3、使用自定义控件。在MainActivity.xml中加入如下代码:

        <!-- 添加自定义控件-->
    <com.example.dingshuo.uitest.TitleLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></com.example.dingshuo.uitest.TitleLayout>
    

      简单的控件自定义方式已经实现了,以后可以根据实际情况制定更复杂的控件。

  • 相关阅读:
    【转】最大子序列和(动态规划学习)
    [转]修改Oracle XDB的8080端口
    【转】 C++常见编译/链接错误及其解决办法
    Pentaho Dashboard Editor使用向导
    [转]什么是Unicode是什么是UTF8是什么
    【转】 typedef的四个用途和两个陷阱
    【转】 C++中类型转换的解释
    从一道笔试题谈算法优化
    [转]谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
    [转]对Oracle数据库的字符集问题的资料收集,受益匪浅
  • 原文地址:https://www.cnblogs.com/tilv37/p/4621227.html
Copyright © 2020-2023  润新知