很多时候,android提供的组件并不能满足我们的需求,于是我们不得不按需求开发自定义控件。

Step 1.

写好自定义控件的内部布局文件。

android:id="@+id/image"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:paddingBottom="5dip"android:paddingLeft="40dip"android:paddingTop="5dip"android:src="@drawable/confirm" />

android:id="@+id/text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:layout_marginLeft="8dip"android:text="确定"android:textColor="#000000" />

Step 2:

写好自定义的控件类并继承LinearLayout,并写好相关方法,用于控制自定义控件的内容。

packageorg.hjw.mybutton;importandroid.content.Context;importandroid.util.AttributeSet;importandroid.view.LayoutInflater;importandroid.widget.ImageView;importandroid.widget.LinearLayout;importandroid.widget.TextView;public class my extendsLinearLayout {privateImageView image;privateTextView text;publicmy(Context context, AttributeSet attrs) {super(context, attrs);

LayoutInflater ll=(LayoutInflater) context

.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

ll.inflate(R.layout.my_button,this);

image=(ImageView) findViewById(R.id.image);

text=(TextView) findViewById(R.id.text);

}public void setImage(intResid) {

image.setImageResource(Resid);

}public voidsetText(String ext) {

text.setText(ext);

}

}

Step3:

需要使用自定义控件时,只需要在xml文件中加入即可,这里我们在主布局文件中加入。

android:background="@drawable/bg_button"

/>

Step 4:

为了使用户体验效果更好,可以加入背景图片的变化效果。

Step 5:

最后在主Activity中像使用其他控件一样使用此控件。

package org.hjw.mybutton;

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

import android.view.View;

import android.widget.Toast;

public class MainActivity extends Activity {

private my My, My2;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

My = (my) findViewById(R.id.myButton1);

My2 = (my) findViewById(R.id.myButton2);

My2.setImage(R.drawable.cancel);

My2.setText("取消");

My.setImage(R.drawable.confirm);

My.setText("确定");

My.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(getApplicationContext(), "You just clicked!", 1)

.show();

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

Step 6:

我们看看效果吧。

╭︿︿︿╮ {/ o  o /}   ( (oo) )     ︶ ︶︶

java 自定义控件_自定义控件的开发相关推荐

  1. java 制作自定义控件_自定义控件的三种方式

    文章转载于https://blog.csdn.net/fictionss/article/details/78285167 原生控件,自己绘制和继承原生控件. 1.组合原生控件 将自己需要的控件组合起 ...

  2. idea java 快捷键_图示Javahtml5开发中IDEA的一些常用默认快捷键

    IDEA全称为IntelliJ IDEA,主要用于以Java语言开发为基础的集成环境,也可以用于诸如html5之类与Java Web系列相关的语言或框架开发:IntelliJ IDEA在编写代码时有一 ...

  3. java 车联网_车联网V2X开发

    最近在做一些车联网V2X 开发的工作,涉及用到开源的欧标CAM 和 DENM,在这里记录一下. CAM 和 DENM 是车辆通信数据的协议栈,属于欧标,其中有两个开源的项目可以参考: Java工程:h ...

  4. editplus java语法_用Editplus开发Java

    原标题:用Editplus开发Java ☆ 准备工作 ①,已安装好jdk,同时配置系统变量(3个,JAVA_HOME,PATH,CLASSPATH) ②,电脑已安装Editplus,并做好设置. ☆ ...

  5. eclipse选择java版本_使用 Eclipse 开发版本选择和下载说明

    现在越来越多的人开发使用 IDEA,使用 Eclipse 开发的已经渐渐变少了,这篇就简单介绍下 Eclipse 的版本选择和下载,供目前还在坚守使用 Eclipse 开发的同胞们~ Eclipse ...

  6. android开发java环境_搭建Android开发环境 - Android - mobile - JavaEye论坛

    Android的开发现在是如火如荼,逞现在不是很忙了,学习了下,这里记录下了在windows在如何搭建Android开发环境,对自己是个记录,对新入门的兄弟姐妹们可以参考一下! (1)安装JDK,省略 ...

  7. eclipse开发java项目_用eclipse 开发java 项目

    一般分为如下4个步骤: 一.创建Java项目(创建项目之前要选择工作空间) 二.创建程序包 三.编写Java源程序 四.运行Java程序 详细说明 1.创建Java 项目 1.1 打开Eclipse, ...

  8. 电信JAVA手机_手机modem开发(28)—开发电信VoLTE开关默认值设置

    电信VoLTE开关默认值设置 [Important Notice]CT VoLTE配置文档名称为<Operator_Specific_Document_CT入库版本准备.docx>,如贵司 ...

  9. JAVA窗帘_利用TurniBit开发板DIY一套自动窗帘模拟系统

    一.准备工作TurnipBit 开发板 一块 下载数据线 一条 微型步进电机(28BYJ-48) 一个 步进电机驱动板(ULN2003APG) 一块 光敏传感器 一个 TurnipBit 扩展板 一块 ...

  10. anychart java实例_在.Net开发中使用AnyChart的简单例子(上)

    1.AnyChart控件相关 显示效果 2.AnyChart的简单原理 AnyChart是一个Flash做的控件,原理图在安装了AnyChart后的说明文档里面有,这里贴一下 其实很好理解,就是想办法 ...

最新文章

  1. 小伙在某知名公司的Python面试题详解,希望对各位以后面试有帮助
  2. 如何异地加载 Spring Boot 配置文件?
  3. Vue的表单组件之复选框
  4. 车品觉 | 大数据的价值:找到别人的“集体智慧”
  5. ITK:用颜色标记图像中的区域
  6. python学习日记(匿名函数)
  7. 【Mac】mac安装go
  8. 4.15Day20加密模块,表格操作模块
  9. 360云服务器合作,360云主机速度(云服务器)
  10. 职场7条小tips,一定有一条说到你心坎里
  11. 粒子滤波的通俗解释,傻子的搜寻策略--我的理解_拔剑-浆糊的传说_新浪博客
  12. 【ctfshow】- web189
  13. c语言万年历怎么加节日,C语言万年历
  14. 如何进行英文文献检索
  15. 为什么Windows系统磁盘盘已使用空间大小与磁盘中总文件大小不符?
  16. html标识标志相关符号
  17. 博客园自定义背景图片
  18. Solr搜索引擎 — 中文全拼简拼分词
  19. YSO小游戏·VB6版代码
  20. 《解忧杂货店》读书笔记

热门文章

  1. ORACLE索引分裂(enq: TX - index contention)
  2. 2020亚太数学建模竞赛A题翻译
  3. 天铁托甲catarinite
  4. 用 Python 实现黑客帝国中的数字雨落既视感
  5. 练习:用swiper实现图片滑动
  6. 鸡啄米编程入门教程代码实现
  7. 有太多工作要做,传蚂蚁集团IPO可能推迟至2022年
  8. 关于公布部分非法刊物的通知及冀职改办字[2006]48号
  9. Excise1_Exception
  10. 开源社区ECE:Elastic认证考试复盘总结134贴