Android调查问卷

来源:互联网 发布:两江国际云计算 编辑:程序博客网 时间:2024/04/29 03:23

想要在Android中实现调查问卷的功能,在网上找寻了一圈发现没有我想要的效果。随后打算自己写一个,开始是用xml生成样式,但是始终是没有成功,最后还是用代码生成了样式,好歹是拼凑出来了。

效果如图:

Android调查问卷图1

Android调查问卷图2

生成表单部分主要代码:

/**     * 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
原创粉丝点击