Android调查问卷
来源:互联网 发布:两江国际云计算 编辑:程序博客网 时间:2024/04/29 03:23
想要在Android中实现调查问卷的功能,在网上找寻了一圈发现没有我想要的效果。随后打算自己写一个,开始是用xml生成样式,但是始终是没有成功,最后还是用代码生成了样式,好歹是拼凑出来了。
效果如图:
生成表单部分主要代码:
/** * Title: createLayout * Description: * @param questionList */ private void createLayout(ArrayList<QuestionModel> questionList) { for (int i = 0; i < questionList.size(); i++) { // ####生成item框架#### LinearLayout itemFeedbackLayout = new LinearLayout(this); itemFeedbackLayout.setBackgroundColor(Color.parseColor("#FFFFFF")); // 设置item宽度、高度 // LinearLayout.LayoutParams paramsItem = new // LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, // UiUtils.dip2px(this, 100)); LinearLayout.LayoutParams paramsItem = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); // 设置item margin paramsItem.setMargins(0, UiUtils.dip2px(this, 10), 0, 0); itemFeedbackLayout.setPadding(UiUtils.dip2px(this, 5), 0, UiUtils.dip2px(this, 5), 0); itemFeedbackLayout.setLayoutParams(paramsItem); itemFeedbackLayout.setBackgroundColor(Color.parseColor("#00000000")); itemFeedbackLayout.setOrientation(LinearLayout.VERTICAL); // ####生成问题TextView#### TextView question = new TextView(this); LinearLayout.LayoutParams paramsTextView = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); paramsTextView.setMargins(0, UiUtils.dip2px(this, 10), 0, UiUtils.dip2px(this, 10)); question.setLayoutParams(paramsTextView); question.setTextSize(UiUtils.sp2px(this, 5.2f)); question.setText((questionList.get(i).getQuestionNo()) + "." + questionList.get(i).getQuestionName()); // 渲染问题到item框架 itemFeedbackLayout.addView(question); // 问题类型0,没有具体选择答案,星级评价 if (questionList.get(i).getQuestionType() == 0) { // ********************************************************************* RatingBar ratingBar = new RatingBar(this, null, android.R.attr.ratingBarStyle); LinearLayout.LayoutParams paramsRastingBar = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); paramsRastingBar.setMargins(UiUtils.dip2px(this, 10), 0, 0, 0); ratingBar.setId(i);// 设置ID ratingBar.setLayoutParams(paramsRastingBar); ratingBar.setNumStars(5);// 设置最大星星数量 ratingBar.setStepSize(1.0f);// 设置星星步长 ratingBar.setRating(0);// 设置默认星星得分 // ratingBar.setProgress(progress); // 设置监听事件 ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() { @Override public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { // ToastUtils.show(SurveyActivity.this, "星星:" + // ratingBar.getId() + "分数" + rating); result.put(ratingBar.getId(), String.valueOf(rating)); } }); itemFeedbackLayout.addView(ratingBar); // 问题类型1,有具体选择项,使用Radio处理 } else if (questionList.get(i).getQuestionType() == 1) { // ################################################################### // ####生成答案选项RadioGroup### final FlowRadioGroup group = new FlowRadioGroup(this); // 实例化单选按钮组 LinearLayout.LayoutParams paramsGroup = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); paramsGroup.setMargins(UiUtils.dip2px(this, 7), 0, 0, 0); group.setLayoutParams(paramsGroup); group.setId(i); group.setOrientation(LinearLayout.HORIZONTAL); // 添加单选按钮 for (int j = 0; j < questionList.get(i).getQuestionOption().size(); j++) { final RadioButton radio = new RadioButton(this); // 设置字体大小 radio.setTextSize(UiUtils.dip2px(SurveyActivity.this, 5)); // 设置radio文字 radio.setText(questionList.get(i).getQuestionOption().get(j)); // 设置radio监听事件 radio.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // ToastUtils.show(SurveyActivity.this, "按钮组" // +String.valueOf(group.getQuestionNo()) + "&按钮:" + // radio.getText().toString()); result.put(group.getId(), radio.getText().toString()); } }); group.addView(radio); } // 渲染RadioGroup到item框架 itemFeedbackLayout.addView(group); } // 附加到item llSurveyMain.addView(itemFeedbackLayout); } // ####添加提交按钮 tvSubmit = new TextView(this); LinearLayout.LayoutParams paramsTvSubmit = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, UiUtils.dip2px(this, 50)); paramsTvSubmit.setMargins(0, UiUtils.dip2px(this, 10), 0, 0); tvSubmit.setText("提交"); tvSubmit.setTextColor(Color.parseColor("#02A0F2")); tvSubmit.setTextSize(UiUtils.sp2px(this, 6.2f)); tvSubmit.setGravity(Gravity.CENTER); tvSubmit.setBackgroundColor(Color.parseColor("#AAFFFFFF")); tvSubmit.setLayoutParams(paramsTvSubmit); llSurveyMain.addView(tvSubmit); }
代码下载
0 0
- Android调查问卷
- 调查问卷
- android 实现调查问卷-单选-多选
- android 实现调查问卷-单选-多选
- 免费调查问卷 调查问卷投票系统
- 如何设计调查问卷
- 大学生旅游调查问卷
- 如何设计“调查问卷”
- 包装设计调查问卷
- 生活水平调查问卷
- Moss调查问卷--仅供参考
- 调查问卷录入spss
- 用户需求调查问卷
- 校园调查问卷网站
- JavaScript实现调查问卷
- 用户调查问卷
- 调查问卷数据库设计
- 调查问卷实例
- EL表达式复习
- startActivityForResult无法调用singleTask的Activity返回的数据
- SpringMVC Controller接收前台ajax的GET或POST请求返回各种参数
- 10个有关快门的必学知识
- 远程桌面配置和常见问题
- Android调查问卷
- 拍照,选择照片并且剪裁
- java web基础 --- forEach标签
- 百度员工离职总结:资质平庸的人该怎么办?
- mycncart 之支付宝即时到帐支付方式
- [细说Java](2)Java中字符串为什么是不可变的
- FZOJ--2214--Knapsack problem(背包)
- 黑马程序员--多线程的应用(1)
- 二叉搜索树BST