代码抄袭小能手 2017-04-25 06:44 采纳率: 50%
浏览 1484
已结题

android动态添加布局,如何控制滑动到某项

根布局用的scrollview,linerlayout动态添加进去很N个item布局,(做的问卷项目,涉及到单选多选,因为是读取本地文件不涉及网络加载,脑残了一下,就没有用listview,直接这么写了),现在要加一个可控制滚动到某一个题的功能。在不改动原有代码的情况下求大神给个思路。

布局核心代码:

android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/title"
android:scrollbars="none">
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

        <LinearLayout
            android:id="@+id/lly_test"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            >

            <TextView
                android:id="@+id/submit"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginBottom="30dp"
                android:layout_marginTop="50dp"
                android:background="@drawable/submit_click_selector"
                android:gravity="center"
                android:text="提交"
                android:textColor="@color/white"
                android:textSize="20sp"/>
        </LinearLayout>


    </LinearLayout>
</toan.android.floatingactionmenu.ObservableScrollView>

    界面相关部分代码块:
    private void initview() {
    //这是要把问题的动态布局加入的布局
    lly_test = (LinearLayout) findViewById(R.id.lly_test);
    title = (TextView) findViewById(R.id.title);
    //获得问题即第二层的数据
    the_quesition_list = questionnaire.getQue_list();
    //根据第二层问题的多少,来动态加载布局
    for (int i = 0; i < the_quesition_list.size(); i++) {
        que_view = xInflater.inflate(R.layout.item_question, null);
        TextView txt_que = (TextView) que_view.findViewById(R.id.txt_question_item);
        q_texviews.add(txt_que);
        //这是第三层布局要加入的地方
        LinearLayout add_layout = (LinearLayout) que_view.findViewById(R.id.lly_answer);
        View line_view = que_view.findViewById(R.id.vw_line);
        set(txt_que,the_quesition_list.get(i).getQuestion_id()+"."+ the_quesition_list.get(i).getQuestion_heading(), the_quesition_list.get(i).getQuestion_type());
        //获得答案即第三层数据
        the_answer_list = the_quesition_list.get(i).getAns_list();
        imglist2 = new ArrayList<ImageView>();
        for (int j = 0; j < the_answer_list.size(); j++) {
            if (the_quesition_list.get(i).getQuestion_type().equals("0")){
                Map<String,Object> map = new HashMap<String, Object>();
                ans_view=xInflater.inflate(R.layout.item_answer2, null);
                ans_view.setTag(j);
                String msg=the_answer_list.get(j).getAnswer_content();
                TextView text = (TextView) ans_view.findViewById(R.id.text);
                a_texviews.add(text);
                EditText image = (EditText) ans_view.findViewById(R.id.txt_answer_item);
                image.setFilters(new InputFilter[]{filter});
                if (msg.equals("身高(cm)")||msg.equals("体重(kg)")||msg.equals("血压:收缩压\n(高压)(mmHg)")||msg.equals("血压:舒张压\n(低压)(mmHg)")||msg.equals("心率(次/分)")){
                    String digists = "0123456789";
                    image.setInputType(InputType.TYPE_CLASS_NUMBER);
                    image.setKeyListener(DigitsKeyListener.getInstance(digists));
                }
                map.put("key",i+"=="+ msg);
                map.put("value", image);
                text.setText(msg);
                list.add(map);
                image.setTag(the_quesition_list.get(i).getQuestion_id()+","+the_answer_list.get(j).getAnswer_id());
                zhengkanglist.add(image);
            }else{
                ans_view = xInflater.inflate(R.layout.item_answer, null);
                TextView txt_ans = (TextView) ans_view.findViewById(R.id.txt_answer_item);
                a_texviews.add(txt_ans);
                ImageView image = (ImageView) ans_view.findViewById(R.id.image);
                //判断单选多选加载不同选项图片
                if (the_quesition_list.get(i).getQuestion_type().equals("1")) {
                    image.setBackgroundDrawable(getResources().getDrawable(R.drawable.multiselect_false));
                } else {
                    image.setBackgroundDrawable(getResources().getDrawable(R.drawable.multiselect_false));
                }
                imglist2.add(image);
                txt_ans.setText(the_answer_list.get(j).getAnswer_content());
                LinearLayout lly_answer_size = (LinearLayout) ans_view.findViewById(R.id.lly_answer_size);
                lly_answer_size.setOnClickListener(new answerItemOnClickListener(i, j, the_answer_list, txt_ans));
            }
            add_layout.addView(ans_view);
        }
        imglist.add(imglist2);
        lly_test.addView(que_view);
    }
}

目的:点击提交时,提示某题没做,然后界面就直接滚动到该题的位置!
  • 写回答

2条回答 默认 最新

  • @Foritee 2017-04-25 07:48
    关注

    让没做的题条目 获取焦点 试试

    评论

报告相同问题?

悬赏问题

  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services