布局与控件(四)-Button的响应与背景
来源:互联网 发布:算法统宗校释 编辑:程序博客网 时间:2024/04/30 04:42
第4节 Button
按钮是需要与用户进行互动的控件。
Button
继承自TextView
,凡是TextView
有的特定,它都有。
public class Button extends TextView { ......}
4.1 与TextView
的不同
Button
是使用了特别style的TextView
。在Button
创建的过程中,它使用了一个系统内部的style,
public Button(Context context, AttributeSet attrs) { //创建Button的时候,系统給它使用了特别的style:com.android.internal.R.attr.buttonStyle this(context, attrs, com.android.internal.R.attr.buttonStyle);}
4.2 Button
的使用方式
Button
被点击后,需要有所响应。其实不仅是Button
,所有的View
(包括TextView
)都可以添加响应。
安卓提供了两种响应的方式。
4.2.1 在xml布局文件中设置响应
给
Button
添加一个属性android:onClick,让它的值等于监听函数的函数名。例如,叫onClick<Button ...... <!--设置监听函数onClick()--> android:onClick="onClick"/>
在java源码当中,创建一个
onClick()
函数,声明成public
, 返回void
类型,传入参数View
,public void onClick(View v){}
使用
View
的getId()
,识别需要响应的对象,添加响应代码,public void onClick(View v){ //使用getId(),识别需要响应的对象 switch(v.getId()) { //添加需要响应的操作代码; case R.id.button1: break; } break;}
4.2.2 在java源码中设置响应
在java源码当中,创建监听器,
OnClickListener mListener = new OnClickListener() { //这个onClick()函数与4.2.1中定义的完全一样 public void onClick(View v) { //使用getId(),识别需要响应的对象 switch(v.getId()) { //添加需要响应的操作代码; } break; }}
通过
findViewById()
得到Button
;再通过View
的setOnClickListener
设置监听器mListener
,//获取xml中的Button对象Button btn = (Button) findViewById(R.id.my_button);//设置监听器btn.setOnClickListener( mListener );
虽然这里讲的是Button
响应的onClick
,但实际上,所有的View
都可以响应点击操作。
所有的控件或者布局都是View
的子类,所以它们设置监听的方法也都是一样的。
4.3 按钮点击效果
除了使用系统设计的按钮样式,也可以自己定义按钮按下去和没有按下去的效果。
在
res\drawable\
目录上,点击右键,启动创建drawable resource的向导;创建selector drawable的xml文件,文件名为
button_selector
;这样,就在
res\drawable\
目录下创建了一个名为button_selector.xml
的drawable文件。根据
Button
是否被按下的状态android:state_pressed
,分别为它们设置不同的drawable。android:state_pressed=true
,说明当前按钮被按下,android:state_pressed=false
,说明当前按钮没有被按下;这里我们用
ColorDrawable
演示设置Drawable。在res\values\colors.xml
中定义的颜色的名字;给android:drawable
属性设置颜色,<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="false" android:drawable="@color/colorBtnNormal"/> <item android:state_pressed="true" android:drawable="@color/colorBtnPressed"/></selector>
如果使用其它类型的Drawable,使用方式类似。
例如背景是图片:按下使用
normal.png
,未按下使用pressed.png
。将这些图片放在res\drawable\
目录下。对应的selector就应该写成,<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="false" android:drawable="@drawable/normal"/> <item android:state_pressed="true" android:drawable="@drawable/pressed"/></selector>
给
Button
的android:background
属性,使用drawable selector,<Button......android:background="@drawable/button_selector"/>
/*******************************************************************/
* 版权声明
* 本教程只在CSDN和安豆网发布,其他网站出现本教程均属侵权。
*另外,我们还推出了Arduino智能硬件相关的教程,您可以在我们的网店跟我学Arduino编程中购买相关硬件。同时也感谢大家对我们这些码农的支持。
*最后再次感谢各位读者对安豆
的支持,谢谢:)
/*******************************************************************/
- 布局与控件(四)-Button的响应与背景
- 父布局与子布局控件的实现响应点击事件冲突问题。
- 布局与控件(五)-Toast吐司与布局的抽象标签merge include ViewStub
- 验证控件与Button的OnClientClick事件
- 验证控件与Button的OnClientClick事件
- button与验证控件的矛盾
- 精通CSS.DIV网页样式与布局(四) ——页面背景
- 布局与控件(九)-ListView的Adapter们
- Servlet学习笔记(四):Servlet的请求与响应
- Servlet学习笔记(四):Servlet的请求与响应
- 布局与控件(一)——布局与控件的常用概念
- Button的四种Click响应方法
- 动态控件的生成与响应
- 控件的动态添加与消息响应
- 动态控件的生成与响应
- 动态控件的生成与响应
- mfc的控件与响应顺序
- MFC Button控件的背景颜色
- QThread详解
- define #
- 【深入SpringBoot 第三章】SpringApplicationRunListener及其周期
- java String 字符串只保留汉字
- visual studio 2008: Cannot open include file: 'stdint.h'
- 布局与控件(四)-Button的响应与背景
- MyBatis之传入参数
- Android性能优化策略
- android 游戏 实战打飞机游戏 BOSS的设计 以及胜利失败页面(6结束)
- [从头学数学] 第231节 不定积分
- java数组和集合复习
- BitmapFactory.decodeStream。报错:SkImageDecoder::Factory returned null 原因及解决方法
- poj1942求组合数
- iOS 自定义分区头加上图片 以及导航控制器 颜色随滑动改变