Android菜鸟日记18
Button的按钮效果与动态设置Margins
一、button的按钮效果
之前做button的按钮效果是
1.继承button然后复写button的方法。
或者
2.用ImageVIew 的visibility 来让2个ImageVIew交替显示来达到按钮效果

昨天玩seekbar时发现了 可以写可以通过xml文件来让变化后的图片也变化。

今天在研究button效果时发现也可以用这个方法:
选择器法……selector

按钮样式
每个按钮的样式默认为系统按钮的背景,不同的设备、不同的平台版本有不同按钮风格。如你不满意默认的按钮样式,想对其定制以符合您应用程序的设计,那么你能用state list drawable替换按钮的背景图片。一个状态列表drawable是一个在XML中定义的drawable资源,根据当前按钮的状态改变其图片。一旦你在XML中定义了一个状态列表drawable,你可以将它应用于你的android:background属性。欲了解更多信息和示例,参见State List Drawable.


<Button android:backgroud=”xml文件地址[选择器]”>

xx.xml 此xml表示button 按下 选择 默认的 图片
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/button_pressed" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/button_focused" /> <!-- focused -->
<item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>
这样速度快 而且直接能用 几乎不用些什么代码

二、动态设置Margins
今天做光学的按钮布局是发现的问题
不同机型的布局是不一样的所以要在代码中获取机器信息后才能对按钮的Margins赋值
结果找了半天没找到如何从bt对象中找到设置的方法,后来搜了半天在网上看到一种方法
通过LayoutParams对象来设置Margins
简单的说:
整个方法就是 通过LinearLayout获取LayoutParams对象 然后对此对象设置margins然后再把设置好的LayoutParams对象传给需要设置的button(imageView也是可以)。


步骤
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
新建一个LinearLayout.LayoutParams(宽布局,高布局)
lp.setMargins(width / 2 - temp, height * 1 / 2, 0, 0);
获得此对象LP 然后用LP.setmargins(左,上,右,下)
bt1.setLayoutParams(lp);
然后吧这个布局参数LP对象设置入bt1


2011-9-20
poolo

更多相关文章

  1. android之View和ViewGroup介绍
  2. 浅谈Android布局
  3. Android存储之SharedPreferences
  4. android 集合与json之间的相互转换
  5. 一起学android之DigitalClock与TextClock的创建(8)
  6. android中在java代码中设置Button按钮的背景颜色
  7. Android官方教程翻译(3)——创建一个简单的用户界面
  8. Andriod: 在xml布局中使用自定义属性
  9. 【Android(安卓)开发教程】自定义ContentProvider

随机推荐

  1. 流行的javascript库介绍
  2. 作用域和闭包; 类与类的继承
  3. 技术问答-23 javabean创建一个二叉树,左
  4. Java 线程池 ThreadPoolExecutor -01
  5. 什么是黑盒测试和白盒测试、灰盒测试?
  6. Java导出类型是什么?
  7. 工作常用的git指令
  8. java do{} while()
  9. 提高团队协作效率就靠它们了!
  10. C 存储类