目标:实现EditText和Button组合成带有清空EditText内容功能的复合控件,可以通过代码设置自定义控件的相关属性。

实现效果为:

(1)在res/layout目录下编写自定义组合控件的布局文件:clear_edittext.xml

代码如下:

<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><EditText android:id="@+id/editText"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"/><Button android:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>

(2)编写自定义组合控件相应的类:ClearEditText.java

代码如下:

package com.demo.compoundwidgetdemo;import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;public class ClearEditText extends LinearLayout {private EditText editText;private Button button;public ClearEditText(Context context) {this(context, null);}public ClearEditText(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub//在构造函数中将布局文件clear_textview.xml中定义的布局解析出来。   LayoutInflater.from(context).inflate(R.layout.clear_edittext, this,true);//得到相应控件editText=(EditText)findViewById(R.id.editText);button=(Button)findViewById(R.id.button);//给button注册相应的事件button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//将EditText内容清空editText.setText("");}});}//设置子控件相关属性的方法public void setEditTextHint(int resid){this.editText.setHint(resid);}public void setEditTextHint(String hint){this.editText.setHint(hint);}public void setButtonText(int resid){this.button.setText(resid);}public void setButtonText(String text){this.button.setText(text);}}

(3)这样就可以像使用普通的控件一样,在自己的程序中使用该自定义组合控件,在activity_main.xml中使用该控件

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="wrap_content"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.demo.compoundwidgetdemo.MainActivity"><!-- 使用自定义组合控件 --><com.demo.compoundwidgetdemo.ClearEditTextandroid:id="@+id/clear_et"android:layout_width="match_parent"android:layout_height="wrap_content"></com.demo.compoundwidgetdemo.ClearEditText></LinearLayout>

(4)在MainActivity.java中操作该组合控件

代码如下:

package com.demo.compoundwidgetdemo;import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;public class MainActivity extends ActionBarActivity {private ClearEditText clearEditText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);clearEditText=(ClearEditText)findViewById(R.id.clear_et);clearEditText.setEditTextHint("带有清空功能的EditText");clearEditText.setButtonText("清空内容");}@Overridepublic 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;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}
}

(5)运行该程序,效果如开始所示。

最后,你可以通过类似的方法将不同控件组合成你需要的控件,这样就可以像使用普通控件一样使用组合控件

Android自定义组合控件--EditText和Button组合成带有清空EditText内容功能的复合控件相关推荐

  1. Android自定义时间控件不可选择未来时间

    本文出自:http://blog.csdn.net/dt235201314/article/details/78718066 Android自定义时间控件选择开始时间到结束时间 Android自定义时 ...

  2. android自定义table,Android 自定义表格控件

    Android 自定义表格控件 发布时间:2018-08-20 17:07, 浏览次数:487 , 标签: Android 1.简介 tabview是一款开源表格控件,可以通过xml属性设置行列数.设 ...

  3. android 自定义switch控件,Android中switch自定义样式

    android 原生开关按钮控件 Switch 提供样式自定义方式,可供我们修改为适合我们开发使用的样式控件,自定义样式过程如下: 自定义switch切换drawable 新建swith_thumb. ...

  4. android 自定义view控件,Android 自定义View——自定义View控件

    Android给我们提供了大量的View控件,但这还是远远满足不了我们的要求,有时候开发所需要的控件形式是在Android提供的控件中是不存在,这就需要我们自己去定义一个.那么如何自定义控件? 学习自 ...

  5. android身高控件_RuleView Android 自定义标尺控件(选择身高、体重等) @codeKK Android开源站...

    尺子刻度 -- 自定义 view 自定义 view 学习(第一章) 1.自定义刻度尺控件 在我们想要获取用户的身高体重等信息时,直接让他们输入显然不够友好偶然看到一款 App 用了类似刻度尺的界面让用 ...

  6. android 自定义ImageView控件实现圆形图片-适用于用户头像

    android开发中常常涉及到一种情况,就是将用户上传的图片以圆形样式显示,但是用户上传的图片可以有直角.圆角.正方形等多种不确定样式,这时就用到了自定义ImageView控件,在安卓客户端使接收到的 ...

  7. Android自定义日历控件,自带农历节假日,已经开源,即取即用~

    关注本人的更多博客:http://www.cnblogs.com/liushilin/ 该自定义日历控件已经开源:github地址 可能不少的小伙伴都有看楼主昨天发的自定义日历控件,虽然实现功能不多, ...

  8. android自定义分组控件,很值得收藏的安卓开源控件库

    日历 日历列表视图 星期视图日历 提交日历日期 material风格的日历 toolbar相结合的弹出日历 横向日历 Tab Material风格的Tab 各种样式Tab ProgressBar 类似 ...

  9. android 自定义刷新控件,Android开发中MJRefresh自定义刷新动画效果

    有时候我们对自己开发的项目经常不满意,但是我们要达到自定义刷新动画的效果有一定的难度,别着急,下面爱站技术频道和大家分享Android开发中MJRefresh自定义刷新动画效果,一起来学习吧! [一] ...

最新文章

  1. 转换前台javascript传递过来的时间字符串到.net的DateTime
  2. R语言可视化密度图并在密度图中嵌入图例信息、使用geomtextpath包的geom_textdensity函数,将图例(legend)信息嵌入到密度图中
  3. win7构建成功helloworld驱动、WDF驱动中KMDF与UMDF区别
  4. Struts2中的链接标签
  5. 三子棋の局势判断(洛谷P1917题题解,Java语言描述)
  6. libtorch和torchvision的编译安装
  7. 不同浏览器input file样式不一样
  8. (8)Node.js 模块介绍
  9. Memory Management (内存管理)
  10. 从企业角度看:网站设计的关键是了解与沟通
  11. 《图算法》第五章 中心性算法-2
  12. 从零到一实现一个CNI
  13. git报错:fatal: 无法为 ‘https‘ 找到远程助手
  14. 量化研究-恐慌和贪婪指数
  15. Kaggle -Linear Regression with Time Series
  16. 用python解决数学问题
  17. Windows系统的电脑有可以删除的文件夹(个人笔记)
  18. 数学专业英语 -- 组合分析和数值分析
  19. 02 NCC定时任务开发
  20. jaspersoft studio实践 --实现网页版打印小票(模板一)

热门文章

  1. Kinect v2.0 for windows开发环境说明
  2. 关于程序设计语言(贴吧里很有意思的一个帖子)
  3. using语句之-释放资源和异常处理
  4. 用SHA1或MD5 算法加密数据(示例:对用户身份验证的简单实现)
  5. Vue入门到TodoList练手
  6. win10 uwp 使用 Matrix3DProjection 进行 3d 投影
  7. FutureTask的使用
  8. java 中的 Scanner
  9. Codeforces 550D. Regular Bridge 构造
  10. 初学视觉学习笔记----用摄像头获取图片