Android自定义组合控件--EditText和Button组合成带有清空EditText内容功能的复合控件
目标:实现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内容功能的复合控件相关推荐
- Android自定义时间控件不可选择未来时间
本文出自:http://blog.csdn.net/dt235201314/article/details/78718066 Android自定义时间控件选择开始时间到结束时间 Android自定义时 ...
- android自定义table,Android 自定义表格控件
Android 自定义表格控件 发布时间:2018-08-20 17:07, 浏览次数:487 , 标签: Android 1.简介 tabview是一款开源表格控件,可以通过xml属性设置行列数.设 ...
- android 自定义switch控件,Android中switch自定义样式
android 原生开关按钮控件 Switch 提供样式自定义方式,可供我们修改为适合我们开发使用的样式控件,自定义样式过程如下: 自定义switch切换drawable 新建swith_thumb. ...
- android 自定义view控件,Android 自定义View——自定义View控件
Android给我们提供了大量的View控件,但这还是远远满足不了我们的要求,有时候开发所需要的控件形式是在Android提供的控件中是不存在,这就需要我们自己去定义一个.那么如何自定义控件? 学习自 ...
- android身高控件_RuleView Android 自定义标尺控件(选择身高、体重等) @codeKK Android开源站...
尺子刻度 -- 自定义 view 自定义 view 学习(第一章) 1.自定义刻度尺控件 在我们想要获取用户的身高体重等信息时,直接让他们输入显然不够友好偶然看到一款 App 用了类似刻度尺的界面让用 ...
- android 自定义ImageView控件实现圆形图片-适用于用户头像
android开发中常常涉及到一种情况,就是将用户上传的图片以圆形样式显示,但是用户上传的图片可以有直角.圆角.正方形等多种不确定样式,这时就用到了自定义ImageView控件,在安卓客户端使接收到的 ...
- Android自定义日历控件,自带农历节假日,已经开源,即取即用~
关注本人的更多博客:http://www.cnblogs.com/liushilin/ 该自定义日历控件已经开源:github地址 可能不少的小伙伴都有看楼主昨天发的自定义日历控件,虽然实现功能不多, ...
- android自定义分组控件,很值得收藏的安卓开源控件库
日历 日历列表视图 星期视图日历 提交日历日期 material风格的日历 toolbar相结合的弹出日历 横向日历 Tab Material风格的Tab 各种样式Tab ProgressBar 类似 ...
- android 自定义刷新控件,Android开发中MJRefresh自定义刷新动画效果
有时候我们对自己开发的项目经常不满意,但是我们要达到自定义刷新动画的效果有一定的难度,别着急,下面爱站技术频道和大家分享Android开发中MJRefresh自定义刷新动画效果,一起来学习吧! [一] ...
最新文章
- 转换前台javascript传递过来的时间字符串到.net的DateTime
- R语言可视化密度图并在密度图中嵌入图例信息、使用geomtextpath包的geom_textdensity函数,将图例(legend)信息嵌入到密度图中
- win7构建成功helloworld驱动、WDF驱动中KMDF与UMDF区别
- Struts2中的链接标签
- 三子棋の局势判断(洛谷P1917题题解,Java语言描述)
- libtorch和torchvision的编译安装
- 不同浏览器input file样式不一样
- (8)Node.js 模块介绍
- Memory Management (内存管理)
- 从企业角度看:网站设计的关键是了解与沟通
- 《图算法》第五章 中心性算法-2
- 从零到一实现一个CNI
- git报错:fatal: 无法为 ‘https‘ 找到远程助手
- 量化研究-恐慌和贪婪指数
- Kaggle -Linear Regression with Time Series
- 用python解决数学问题
- Windows系统的电脑有可以删除的文件夹(个人笔记)
- 数学专业英语 -- 组合分析和数值分析
- 02 NCC定时任务开发
- jaspersoft studio实践 --实现网页版打印小票(模板一)