Android 动态添加自定义式样的按钮
2012-12-26 14:53
381 查看
有时候根据项目需求需要动态地增加控件.
比如根据一种商品的可支付方式,动态地添加支付手段的按钮.
实现起来比较容易,唯一要注意的是,button外要嵌套一层linearlayout以控制按钮所在位置.
而自定义的按钮样式可以通过selector来实现.
整个Demo工程结构如下:
动态增加按钮的代码:
button_selector的代码如下:
其中:
gradient:渐变
android:startColor:起始颜色;android:endColor结束颜色,android:angle:渐变角度,必须为45的整数倍。
另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。
stroke:描边
android:width:描边的宽度,android:color: 描边的颜色。
描边可以做成虚线的式,设置方式为:android:dashWidth:一个横线的宽度;android:dashGap:之间隔开的距离.
corners:圆角
android:radius:角的弧度,值越大角越圆。
padding:内间距
Demo下载地址:http://download.csdn.net/detail/singleton1900/4930004
比如根据一种商品的可支付方式,动态地添加支付手段的按钮.
实现起来比较容易,唯一要注意的是,button外要嵌套一层linearlayout以控制按钮所在位置.
而自定义的按钮样式可以通过selector来实现.
整个Demo工程结构如下:
动态增加按钮的代码:
package com.harlan.demo.activity; import java.util.ArrayList; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.LinearLayout; public class DynBtnActivity extends Activity { private LinearLayout mBtnRoot; private ArrayList<String> Array; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mBtnRoot = (LinearLayout)findViewById(R.id.btn_lay); initArray(); addBtn(); } private void initArray() { Array = new ArrayList<String>(); Array.add("BTN01"); Array.add("BTN02"); Array.add("BTN03"); Array.add("BTN04"); Array.add("BTN05"); Array.add("BTN06"); } private void addBtn() { for (int i = 0; i < Array.size(); i++) { LinearLayout linearLayout = new LinearLayout(getApplicationContext()); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(200, LayoutParams.WRAP_CONTENT); lp.setMargins(0, 10, 0, 10); linearLayout.setLayoutParams(lp); Button button = new Button(getApplicationContext()); LayoutParams layoutParams = new LayoutParams(200, LayoutParams.WRAP_CONTENT); button.setLayoutParams(layoutParams); button.setText(Array.get(i)); button.setTextColor(Color.WHITE); button.setBackgroundResource(R.drawable.button_selector); linearLayout.addView(button); mBtnRoot.addView(linearLayout); } } }
button_selector的代码如下:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <shape> <gradient android:angle="90" android:endColor="#ffa33d" android:startColor="#ff7c00" /> <stroke android:width="1dip" android:color="#fd9417" /> <corners android:radius="5dp" /> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> </shape> </item> <item android:state_focused="true"> <shape> <gradient android:angle="90" android:endColor="#fcd673" android:startColor="#eb9212" /> <stroke android:width="1dip" android:color="#dc6b00" /> <corners android:radius="5dp" /> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> </shape> </item> <item> <shape> <gradient android:angle="90" android:endColor="#6f859c" android:startColor="#25486e" /> <stroke android:width="1dip" android:color="#06274a" /> <corners android:radius="5dip" /> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> </shape> </item> </selector>
其中:
gradient:渐变
android:startColor:起始颜色;android:endColor结束颜色,android:angle:渐变角度,必须为45的整数倍。
另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。
stroke:描边
android:width:描边的宽度,android:color: 描边的颜色。
描边可以做成虚线的式,设置方式为:android:dashWidth:一个横线的宽度;android:dashGap:之间隔开的距离.
corners:圆角
android:radius:角的弧度,值越大角越圆。
padding:内间距
Demo下载地址:http://download.csdn.net/detail/singleton1900/4930004
相关文章推荐
- 自定义Android Action Bar,标题和按钮可以动态添加
- Android 自定义底部导航栏和动态添加fragment
- 【Android】自定义View-为文字添加动态闪动效果
- Android部分开源项目源码分析之---ViewBadge(View 上面动态的自定义的添加view)
- android--解决方案--自定义tabhost(动态添加选项+带自动水平滑动选项卡+手势切换选项卡及内容功能)
- Android – ListView 中添加按钮,动态删除添加ItemView的操作
- android 动态添加自定义TextView
- Android – ListView 中添加按钮,动态删除添加ItemView的操作
- android:动态创建多个按钮 并给每个按键添加监听事件
- android开发——动态添加按钮及事件处理
- 【android】ListView 中添加按钮,动态删除添加ItemView的操作
- Android开发中button按钮的使用及动态添加组件方法示例
- Android中如何在“自定义布局”中“动态”添加控件
- Android – ListView 中添加按钮,动态删除添加ItemView的操作
- android_动态添加按钮和事件中添加按钮
- Android 自定义底部导航栏和动态添加fragment
- 安卓(Android)动态创建多个按钮并添加监听事件
- android:动态创建多个按钮 并给每个按键添加监听事件
- Android动画(透明度,平移,旋转,拉伸,动态添加按钮)
- 【Android开发学习30】动态创建多个按钮,并给每个按键添加监听事件