Android基础UI控件之Button
2016-05-11 17:02
537 查看
掌握Android基础的UI控件是学习Android的基础,首先是Button控件。
Button控件使用方法也比较简单,总结下来如下:
1.在XML布局文件中设置一些按钮的属性,包括位置,大小,颜色等,也可以在程序中直接创建。
2.给按钮设置唯一的id号,在程序中获取到按钮,然后做一些常用的处理,例如按钮的点击事件等。
3.也可以直接在xml文件中设置按钮的onclick属性,就不用在程序中获取id了,直接实现onclick中的方法即可。
4.添加selector,丰富按钮点击样式。
以下按照上面四步来进行展开:
新建一个ButtonExample的按钮测试工程,然后编辑xml文件:
上面就是一些常用的设置按钮的宽高、位置、文字、字体颜色、字体大小属性,效果如下:
![](http://img.blog.csdn.net/20160511154941343)
也可以在activity中用代码可以编写出类似的一个button按钮控件,代码如下:
生成一个Button对象,设定一些常见的属性,然后把button添加到它的父布局也就是RelativeLayout中去,运行结果:
![](http://img.blog.csdn.net/20160511160527797)
接下来为按钮设置监听事件,给按钮设置id
然后在MainActivity中通过id找到按钮,监听按钮点击事件,代码片段如下:
这里是用内部类的方式,实现OnClickListener接口,在这个类中实现onClick方法,方法体中写入点击按钮想做的事情,这里只是简单的弹出一个吐司。然后将这个内部类的对象传入按钮的setOnClickListener方法中,这样就完成了监听器对象和按钮的绑定(在事件源Button上注册了事件监听器),这时候只要按钮被点击了,那么监听器对象的onClick方法就会被调用。
运行结果:
![](http://img.blog.csdn.net/20160511161535939)
也可以在布局文件中直接给按钮设置一个onclick属性,然后实现onclick中的方法,代码如下:
在MainActivity类中实现该方法,代码片段如下:
运行结果为:
![](http://img.blog.csdn.net/20160511162054650)
介绍完了怎么创建按钮和设置按钮监听点击事件,接下来给按钮丰富一下样式,让点击下去的按钮图片和没有点击的按钮图片不一样,事实上开发中一般都是这样用的,下面就看步骤:
1.准备两张按钮(我这里是点9图)的图片,放到drawable-hdpi目录下,然后在res目录下新建drawable目录:
![](http://img.blog.csdn.net/20160511165452648)
在drawable目录下新建一个button_selector.xml文件:
然后在button的xml文件中添加背景:
这样就把选择器中设定的按钮图片样式赋给了按钮,执行结果如下:
没有点击的时候:
![](http://img.blog.csdn.net/20160511165957187)
按钮点击下去的时候:
![](http://img.blog.csdn.net/20160511170011786)
这样能够形成点击前后的反差,可以直接感受到按钮是否被点击了。
好了,以上就是按照前面提出的四步展开来实现的,也比较简单,如果有错误的地方还请指正出来。
Button控件使用方法也比较简单,总结下来如下:
1.在XML布局文件中设置一些按钮的属性,包括位置,大小,颜色等,也可以在程序中直接创建。
2.给按钮设置唯一的id号,在程序中获取到按钮,然后做一些常用的处理,例如按钮的点击事件等。
3.也可以直接在xml文件中设置按钮的onclick属性,就不用在程序中获取id了,直接实现onclick中的方法即可。
4.添加selector,丰富按钮点击样式。
以下按照上面四步来进行展开:
新建一个ButtonExample的按钮测试工程,然后编辑xml文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="第一个按钮" android:textColor="#ff00ff" android:textSize="20sp" /> </RelativeLayout>
上面就是一些常用的设置按钮的宽高、位置、文字、字体颜色、字体大小属性,效果如下:
也可以在activity中用代码可以编写出类似的一个button按钮控件,代码如下:
RelativeLayout rl = (RelativeLayout) findViewById(R.id.rl); Button button = new Button(this); button.setText("第二个按钮"); button.setTextColor(Color.RED); button.setTextSize(18); rl.addView(button);
生成一个Button对象,设定一些常见的属性,然后把button添加到它的父布局也就是RelativeLayout中去,运行结果:
接下来为按钮设置监听事件,给按钮设置id
android:id="@+id/bt_click"
然后在MainActivity中通过id找到按钮,监听按钮点击事件,代码片段如下:
Button myButton = (Button) findViewById(R.id.bt_click); myButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "你点击了第一个按钮", Toast.LENGTH_SHORT).show(); } });
这里是用内部类的方式,实现OnClickListener接口,在这个类中实现onClick方法,方法体中写入点击按钮想做的事情,这里只是简单的弹出一个吐司。然后将这个内部类的对象传入按钮的setOnClickListener方法中,这样就完成了监听器对象和按钮的绑定(在事件源Button上注册了事件监听器),这时候只要按钮被点击了,那么监听器对象的onClick方法就会被调用。
运行结果:
也可以在布局文件中直接给按钮设置一个onclick属性,然后实现onclick中的方法,代码如下:
android:onClick="myButton"
在MainActivity类中实现该方法,代码片段如下:
public void myButton(View v) { Toast.makeText(MainActivity.this, "你通过onClick方式点击了第一个按钮", Toast.LENGTH_SHORT).show(); }
运行结果为:
介绍完了怎么创建按钮和设置按钮监听点击事件,接下来给按钮丰富一下样式,让点击下去的按钮图片和没有点击的按钮图片不一样,事实上开发中一般都是这样用的,下面就看步骤:
1.准备两张按钮(我这里是点9图)的图片,放到drawable-hdpi目录下,然后在res目录下新建drawable目录:
在drawable目录下新建一个button_selector.xml文件:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/btn_green_pressed" android:state_pressed="true"/> <!-- 当按钮按下去的时候显示的图片--> <item android:drawable="@drawable/btn_green_pressed" android:state_focused="true"/> <!-- 当聚焦到按钮上的时候显示的按钮图片--> <item android:drawable="@drawable/btn_green_normal"/> <!-- 正常的就是没有点击也没有把鼠标放到按钮上的时候显示的样式图片--> </selector>
然后在button的xml文件中添加背景:
android:background="@drawable/button_selector"
这样就把选择器中设定的按钮图片样式赋给了按钮,执行结果如下:
没有点击的时候:
按钮点击下去的时候:
这样能够形成点击前后的反差,可以直接感受到按钮是否被点击了。
好了,以上就是按照前面提出的四步展开来实现的,也比较简单,如果有错误的地方还请指正出来。
相关文章推荐
- iOS开发之基础视图——UIImageView
- 最长上升子序列LIS(Longest increasing subsequence)
- 用 @ModelAttribute 出现The request sent by the client was syntactically incorrect.的解决办法
- UITableview自定义accessory按钮和ImageView大小一致
- Xcode多种Build Configuration配置使用
- gradle plugin user guide中文版
- UE4中GameInstance和GameState区别
- [置顶]iOSDay34之UICollectionView
- [置顶]iOSDay25之UIScrollView
- UIImage两种初始化的区别
- iOSDay30之UITableView编辑
- APUE,TLPI读书笔记——信号
- iOSDay14之OC NSNumber + NSValue
- 【Arduino官方教程第一辑】示例程序 4-1 ASCIl表
- Ajax请求中的async:false/true的作用
- iOS UITextField限制输入内容
- 【IOS开发】UIImageView的用法 图片
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- java集合类深入分析之PriorityQueue
- Failed to set (keyPath) user defined inspected property on (UIView): [<UIView 0x7994f790> setValue:f