android动态设置配置项并随机排布并实现多选
来源:互联网 发布:电脑打电话软件 编辑:程序博客网 时间:2024/05/28 15:06
效果如下:
首先布局是这样的,只有一个自定义的控件的FlowLayout
<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" 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=".MainActivity" > <com.example.zza_android_test7.FlowLayout android:id="@+id/flow" android:layout_width="match_parent" android:layout_height="match_parent" > </com.example.zza_android_test7.FlowLayout></RelativeLayout>活动页面,实现了两种方法
package com.example.zza_android_test7;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.view.ViewGroup.MarginLayoutParams;import android.widget.CheckBox;import android.widget.LinearLayout;import com.example.zza_android_test7.FlowLayout.LayoutParams;public class MainActivity extends Activity {private FlowLayout flow;private List<String> dataList;private int dip2px;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);dip2px = DensityUtil.dip2px(this, 10);getData();flow = (FlowLayout) findViewById(R.id.flow);// dynamicSetText();dynamicSetText2();}/** * 动态设置配置项 */@SuppressWarnings("deprecation")public void dynamicSetText() {/** * 布局中已经有FlowLayout这个控件了,但是这里为什么还要嵌套在CheckBox上再嵌套一层FlowLayout呢? * 因为FlowLayout中子控件是MarginLayoutParams, * 所以不管是FlowLayout再作为子控件还是CheckBox必须是MarginLayoutParams */FlowLayout.LayoutParams lp = new FlowLayout.LayoutParams(FlowLayout.LayoutParams.WRAP_CONTENT,FlowLayout.LayoutParams.WRAP_CONTENT);lp.leftMargin = DensityUtil.dip2px(this, 10);lp.rightMargin = DensityUtil.dip2px(this, 10);lp.topMargin = DensityUtil.dip2px(this, 5);lp.bottomMargin = DensityUtil.dip2px(this, 5);for (int i = 0; i < dataList.size(); i++) {String city = dataList.get(i);final CheckBox checkBox = new CheckBox(this);checkBox.setLayoutParams(new ViewGroup.LayoutParams(// ViewGroup.MarginLayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT));checkBox.setPadding(dip2px, dip2px, dip2px, dip2px);checkBox.setBackgroundResource(R.drawable.selector_checkbox);checkBox.setButtonDrawable(getResources().getDrawable(android.R.color.transparent));checkBox.setText(city);flow.addView(checkBox, lp);// 设置选择后文字颜色变化checkBox.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif (checkBox.isChecked()) {checkBox.setTextColor(getResources().getColor(R.color.green));} else {checkBox.setTextColor(getResources().getColor(R.color.black));}}});}}/** * 动态设置配置项 */@SuppressWarnings("deprecation")public void dynamicSetText2() {/** * 布局中已经有FlowLayout这个控件了,不需要再在CheckBox上嵌套一层FlowLayout呢, * 因为FlowLayout中子控件是MarginLayoutParams,所以CheckBox也要是MarginLayoutParams */for (int i = 0; i < dataList.size(); i++) {String city = dataList.get(i);final CheckBox checkBox = new CheckBox(this);MarginLayoutParams mlp = new MarginLayoutParams(MarginLayoutParams.WRAP_CONTENT,MarginLayoutParams.WRAP_CONTENT);// 设置marginLeft/Right/Top/Bottommlp.setMargins(dip2px, dip2px, dip2px, dip2px);checkBox.setLayoutParams(mlp);// 设置文字paddingcheckBox.setPadding(dip2px, dip2px, dip2px, dip2px);checkBox.setBackgroundResource(R.drawable.selector_checkbox);checkBox.setButtonDrawable(getResources().getDrawable(android.R.color.transparent));checkBox.setText(city);flow.addView(checkBox);// 设置选择后文字颜色变化checkBox.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif (checkBox.isChecked()) {checkBox.setTextColor(getResources().getColor(R.color.green));} else {checkBox.setTextColor(getResources().getColor(R.color.black));}}});}}public List<String> getData() {dataList = new ArrayList<String>();dataList.add("南京");dataList.add("北京");dataList.add("连云港");dataList.add("青岛");dataList.add("丽江");dataList.add("漠河");dataList.add("重庆");return dataList;}@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;}}
下载地址
0 0
- android动态设置配置项并随机排布并实现多选
- android 动态创建控件并设置布局
- android 动态创建控件并设置布局
- android 动态创建控件并设置布局
- Android 动态添加View并设置padding
- Spring 配置多个数据源,并实现动态切换
- Spring 配置多个数据源,并实现动态切换
- Spring 配置多个数据源,并实现动态切换
- Android 动态生成多个控件并实现点击
- RHEL5安装Oracle11g并设置随机启动
- 【java】java实现动态时钟并可以设置闹钟
- android 动态加载按钮并为按钮设置点击事件
- android 通过组件属性动态创建控件并设置布局
- 实现flash的动态图片切换并配置连接
- spring 整合shiro ,并实现动态url 配置
- 利用spring+ibatiS技术,在spring中配置多个数据源,并实现动态切换。
- 利用spring+ibatiS技术,在spring中配置多个数据源,并实现动态切换。
- Spring配置多个数据源,并实现数据源的动态切换
- K近邻法算法(KNN)及其R实现
- Java代理机制
- js获取当前时间!
- Hello World
- git merge 和 git rebase 小结
- android动态设置配置项并随机排布并实现多选
- 设计模式总结
- 创建一个直角三角形类(regular triangle)RTriangle类,实现下列接口IShape。两条直角边长作为RTriangle类的私有成员,类中包含参数为直角边的构造方法。
- tomcat org.apache.catalina.LifecycleException: Failed to start component
- Unity优化之ScrollRect
- 深度学习2016主要进展
- C++基础 函数
- 在Ubuntu上安装Python版MXNet
- WebViewJavascriptBridge初识