折叠式答题样式
来源:互联网 发布:数据库关系模式例子 编辑:程序博客网 时间:2024/04/30 14:09
先看看实现的效果
实现的效果说明:
答题区域始终在底部,每答一道题就向上添加一个折叠的样式;点击折叠的样式可以对该题进行修改,选中答案就折叠起来,如果,没有选答案,而去选择其他的题进行修改,也将刚才的那个折叠起来,也就是说最多可以有两个折叠的样式存在,点击下面新答的题,注意不是修改题,则折叠上面的所有。
直接上代码吧,讲解都在注释中
public class FoldTestActivity extends AppCompatActivity { private ScrollView mScrollView; private LinearLayout mContentLinearView; private TextView mAnsweredQuestionCountView; private TextView mSubmitView; private LinearLayout mBtnLinearView; private RelativeLayout mBottomRelativeView; private TextView mNoneView; private TextView mLittleView; private TextView mSomeView; private TextView mOftenView; private TextView mAlwaysView; private TextView mQuestionView; private View mItemView; private List<String> lists; private Map<String,String> answers; private boolean isItemHadOpen;//是否已经存在一个待修改状态(open状态)的item private int itemQuestion;//点击修改的条目,主要是记录上次的那个,然后将其关闭 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fold_test); initViews(); initDatas(); initListeners(); } private void initViews() { mScrollView = (ScrollView) findViewById(R.id.scrollView); mContentLinearView = (LinearLayout) findViewById(R.id.linear_content); mAnsweredQuestionCountView = (TextView) findViewById(R.id.count_question_already_answer); mSubmitView = (TextView) findViewById(R.id.submit_test); mBottomRelativeView = (RelativeLayout) findViewById(R.id.bottom_view); mBtnLinearView = (LinearLayout) findViewById(R.id.btn_linear); mQuestionView = (TextView) findViewById(R.id.text_question); mNoneView = (TextView) findViewById(R.id.btn_none); mLittleView = (TextView) findViewById(R.id.btn_little); mSomeView = (TextView) findViewById(R.id.btn_some); mOftenView = (TextView) findViewById(R.id.btn_often); mAlwaysView = (TextView) findViewById(R.id.btn_always); } private void initDatas() { lists = new ArrayList<>(); answers = new HashMap<>(); for(int i = 0;i<20;i++){ lists.add("经常吃的多吗?"); } mAnsweredQuestionCountView.setText(0 + "/" + lists.size()); mQuestionView.setText((1) + "." + lists.get(0)); } private void initListeners() { mNoneView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { v.setTag(0); changeBtnStatus((TextView) v); } }); mLittleView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { v.setTag(1); changeBtnStatus((TextView) v); } }); mSomeView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { v.setTag(2); changeBtnStatus((TextView) v); } }); mOftenView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { v.setTag(3); changeBtnStatus((TextView) v); } }); mAlwaysView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { v.setTag(4); changeBtnStatus((TextView) v); } }); mSubmitView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //TODO 提交答案 } }); } private void changeBtnStatus(final TextView currentView) { final int currentQuestion = mContentLinearView.getChildCount() - 2; //记录答案 /* //answers是list时 answers.add(new BaseInfo(lists.get(currentQuestion - 1).getId(), lists.get(currentQuestion - 1).getAnswers().get(Integer.parseInt(v.getTag().toString())).getId()));*/ answers.put((currentQuestion-1)+"","答案"); //点击一个准备修改,没有选答案,直接继续答题,在这里将那个准备选的折叠 if (isItemHadOpen) {//存在一个已经处于修改状态的Item mContentLinearView.getChildAt(itemQuestion).findViewById(R.id.layout_item).setVisibility(View.VISIBLE); mContentLinearView.getChildAt(itemQuestion).findViewById(R.id.bottom_view).setVisibility(View.GONE); } //答题进度 mAnsweredQuestionCountView.setText(currentQuestion + "/" + lists.size()); for (int i = 0; i < mBtnLinearView.getChildCount(); i++) { if (mBtnLinearView.getChildAt(i) instanceof TextView) { mBtnLinearView.getChildAt(i).setBackgroundResource(R.drawable.btn_bg_self_test_can_click); ((TextView) mBtnLinearView.getChildAt(i)).setTextColor(getResources().getColor(R.color.color_3183e9)); } else { continue; } } currentView.setTextColor(getResources().getColor(R.color.color_ffffff)); currentView.setBackgroundResource(R.drawable.btn_bg_self_test_select); mItemView = LayoutInflater.from(FoldTestActivity.this).inflate(R.layout.layout_item_test_question, null, false); final LinearLayout flodView = (LinearLayout) mItemView.findViewById(R.id.layout_item); flodView.setTag(currentQuestion); final RelativeLayout openView = (RelativeLayout) mItemView.findViewById(R.id.bottom_view); //修改已经答过的题 flodView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //点击了一个准备修改,没有选答案继续点下一个要修改的情况,在这里折叠上一个 if (isItemHadOpen) {//存在一个已经处于修改状态的Item mContentLinearView.getChildAt(itemQuestion).findViewById(R.id.layout_item).setVisibility(View.VISIBLE); mContentLinearView.getChildAt(itemQuestion).findViewById(R.id.bottom_view).setVisibility(View.GONE); } isItemHadOpen = true; itemQuestion = currentQuestion;// Log.e("------------>", "item click" + isItemHadOpen + "itemQuestion" + itemQuestion); //点击已经答过的题,展开进行修改 flodView.setVisibility(View.GONE); openView.setVisibility(View.VISIBLE); //展开后题目 int currentItemId = Integer.parseInt(flodView.getTag().toString()); ((TextView) (openView.findViewById(R.id.text_question_open))).setText(currentItemId + "." + lists.get(currentItemId - 1)); //展开后显示选中的答案 TextView textView = null; switch (Integer.parseInt(flodView.findViewById(R.id.text_answer).getTag().toString())) { case 0: textView = (TextView) openView.findViewById(R.id.btn_none); break; case 1: textView = (TextView) openView.findViewById(R.id.btn_little); break; case 2: textView = (TextView) openView.findViewById(R.id.btn_some); break; case 3: textView = (TextView) openView.findViewById(R.id.btn_often); break; case 4: textView = (TextView) openView.findViewById(R.id.btn_always); break; } textView.setBackgroundResource(R.drawable.btn_bg_self_test_select); textView.setTextColor(getResources().getColor(R.color.color_ffffff)); //每个button答案添加点击事件 final LinearLayout btnLinear = (LinearLayout) openView.findViewById(R.id.btn_linear); final List<TextView> btns = new ArrayList<TextView>(); for (int i = 0; i < btnLinear.getChildCount(); i++) { if (btnLinear.getChildAt(i) instanceof TextView) { btns.add((TextView) btnLinear.getChildAt(i)); btnLinear.getChildAt(i).setTag(btns.size() - 1); btnLinear.getChildAt(i).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { for (int j = 0; j < btns.size(); j++) { btns.get(j).setBackgroundResource(R.drawable.btn_bg_self_test_can_click); btns.get(j).setTextColor(getResources().getColor(R.color.color_3183e9)); } //修改完答案后将展开的View折叠 flodView.setVisibility(View.VISIBLE); openView.setVisibility(View.GONE); //修改折叠起来时显示的答案 ((TextView) flodView.findViewById(R.id.text_answer)).setText(((TextView) v).getText()); ((TextView) (flodView.findViewById(R.id.text_answer))).setTag(v.getTag()); //记录答案 题号从1开始,答案从0开始,使用list存储答案,修改时要记得移除之前的那个答案,否则会出错// answers.remove(currentQuestion-1);// answers.add(new BaseInfo(lists.get(currentQuestion - 1).getId(), lists.get(currentQuestion - 1).getAnswers().get(Integer.parseInt(v.getTag().toString())).getId())); answers.put((currentQuestion-1)+"","答案"); isItemHadOpen = false; } }); } else { continue; } } } }); //每答一个题就添加一个折叠样式的View mContentLinearView.addView(mItemView, currentQuestion); ((TextView) (mItemView.findViewById(R.id.text_question))).setText(currentQuestion + "." + lists.get(currentQuestion - 1)); ((TextView) (mItemView.findViewById(R.id.text_answer))).setText(currentView.getText()); mItemView.findViewById(R.id.text_answer).setTag(currentView.getTag()); mScrollView.postDelayed(new Runnable() { @Override public void run() { mScrollView.fullScroll(View.FOCUS_DOWN); } }, 30);// Log.e("-------------->", "currentQuestion" + currentQuestion + ",size" + lists.size()); if (currentQuestion >= lists.size()) { mSubmitView.setVisibility(View.VISIBLE); mBottomRelativeView.setVisibility(View.GONE); } else { mQuestionView.setText((currentQuestion + 1) + "." + lists.get(currentQuestion)); //将答题的View重新至位 for (int i = 0; i < mBtnLinearView.getChildCount(); i++) { if (mBtnLinearView.getChildAt(i) instanceof TextView) { mBtnLinearView.getChildAt(i).setBackgroundResource(R.drawable.btn_bg_self_test_can_click); ((TextView) mBtnLinearView.getChildAt(i)).setTextColor(getResources().getColor(R.color.color_3183e9)); } else { continue; } } } }
activity布局activity_fold_test
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_fold_test" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.trtpre.www.demo.activitys.FoldTestActivity"> <ScrollView android:id="@+id/scrollView" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/linear_content" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="300dp" android:background="@color/color_3183e9" android:text="一些其他的View" android:gravity="center"/> </LinearLayout> <RelativeLayout android:id="@+id/bottom_view" android:layout_width="match_parent" android:layout_height="200dp" android:layout_alignParentBottom="true" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:background="@drawable/bg_self_test" android:orientation="vertical"> <TextView android:id="@+id/text_question" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="14dp" android:layout_marginRight="14dp" android:layout_marginTop="24dp" android:lineSpacingExtra="5dp" android:text="1、你的脸比别人大吗" android:textColor="@color/color_3183e9" /> <LinearLayout android:id="@+id/btn_linear" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="70dp" android:gravity="center" android:orientation="horizontal"> <View android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" /> <TextView android:id="@+id/btn_none" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/btn_bg_self_test_can_click" android:clickable="true" android:gravity="center" android:text="没有" android:textColor="@color/color_3183e9" android:textSize="14sp" /> <View android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" /> <TextView android:id="@+id/btn_little" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/btn_bg_self_test_can_click" android:clickable="true" android:gravity="center" android:text="很少" android:textColor="@color/color_3183e9" android:textSize="14sp" /> <View android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" /> <TextView android:id="@+id/btn_some" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/btn_bg_self_test_can_click" android:clickable="true" android:gravity="center" android:text="有时" android:textColor="@color/color_3183e9" android:textSize="14sp" /> <View android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" /> <TextView android:id="@+id/btn_often" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/btn_bg_self_test_can_click" android:clickable="true" android:gravity="center" android:text="经常" android:textColor="@color/color_3183e9" android:textSize="14sp" /> <View android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" /> <TextView android:id="@+id/btn_always" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/btn_bg_self_test_can_click" android:clickable="true" android:gravity="center" android:text="总是" android:textColor="@color/color_3183e9" android:textSize="14sp" /> <View android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" /> </LinearLayout> <TextView android:id="@+id/count_question_already_answer" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="20dp" android:gravity="center" android:text="1/60" /> </RelativeLayout> <TextView android:id="@+id/submit_test" android:layout_width="280dp" android:layout_height="45dp" android:layout_gravity="center" android:layout_marginBottom="60dp" android:layout_marginLeft="49dp" android:layout_marginRight="49dp" android:layout_marginTop="50dp" android:background="@drawable/bg_btn_submit_test_select" android:gravity="center" android:text="提交" android:textColor="@color/color_ffffff" android:textSize="16sp" android:visibility="gone"/> </LinearLayout> </ScrollView></RelativeLayout>
每个条目的布局layout_item_test_question
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingBottom="10dp" android:paddingLeft="10dp" android:paddingRight="10dp" android:background="@color/color_f5f5f5"> <LinearLayout android:id="@+id/layout_item" android:layout_width="match_parent" android:layout_height="80dp" android:orientation="horizontal" android:background="@drawable/bg_self_test" > <TextView android:id="@+id/text_question" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center_vertical" android:textColor="@color/color_666666" android:textSize="16sp" android:layout_marginLeft="15dp" android:lines="1" android:ellipsize="end"/> <TextView android:id="@+id/text_answer" android:layout_width="33dp" android:layout_height="33dp" android:background="@drawable/btn_bg_self_test_not_click" android:gravity="center" android:textSize="12sp" android:textColor="@color/color_999999" android:layout_marginRight="20dp" /> </LinearLayout> <RelativeLayout android:id="@+id/bottom_view" android:layout_width="match_parent" android:layout_height="200dp" android:background="@drawable/bg_self_test" android:orientation="vertical" android:visibility="gone"> <TextView android:id="@+id/text_question_open" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="14dp" android:layout_marginRight="14dp" android:layout_marginTop="24dp" android:lineSpacingExtra="5dp" android:text="1、你的脸比别人大吗" android:textColor="@color/color_3183e9" /> <LinearLayout android:id="@+id/btn_linear" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="70dp" android:gravity="center" android:orientation="horizontal"> <View android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" /> <TextView android:id="@+id/btn_none" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/btn_bg_self_test_can_click" android:clickable="true" android:gravity="center" android:text="没有" android:textColor="@color/color_3183e9" android:textSize="14sp" /> <View android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" /> <TextView android:id="@+id/btn_little" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/btn_bg_self_test_can_click" android:clickable="true" android:gravity="center" android:text="很少" android:textColor="@color/color_3183e9" android:textSize="14sp" /> <View android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" /> <TextView android:id="@+id/btn_some" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/btn_bg_self_test_can_click" android:clickable="true" android:gravity="center" android:text="有时" android:textColor="@color/color_3183e9" android:textSize="14sp" /> <View android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" /> <TextView android:id="@+id/btn_often" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/btn_bg_self_test_can_click" android:clickable="true" android:gravity="center" android:text="经常" android:textColor="@color/color_3183e9" android:textSize="14sp" /> <View android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" /> <TextView android:id="@+id/btn_always" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/btn_bg_self_test_can_click" android:clickable="true" android:gravity="center" android:text="总是" android:textColor="@color/color_3183e9" android:textSize="14sp" /> <View android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" /> </LinearLayout> </RelativeLayout></LinearLayout>
阅读全文
0 0
- 折叠式答题样式
- 展开样式答题写法
- 简单的答题模板样式
- 答题
- 创建折叠式导航菜单
- JS 实现折叠式菜单
- 折叠式侧滑菜单
- 折叠式图片导航栏
- 折叠式的菜单
- CollapsingToolbarLayout可折叠式标题栏
- 自动折叠式楼层
- Android开发--折叠式标题
- 答题了
- 在线答题
- 模拟答题
- 人工答题
- 答题技巧
- 答题-jquery
- 可视化情报分析平台
- threejs字体加载(threejs版本85左右)
- 字符串统计字或词 Count数量
- 关于html中的meta标签
- LeetCode
- 折叠式答题样式
- Ubuntu16.04+tensorflow1.2+anaconda2安装配置
- 深夜的你—开心编程之深夜体会
- Gradle在Android Studio中的应用技巧
- UITableView的全部属性、方法以及代理方法执行顺序
- Bzoj1053 [HAOI2007]反素数ant
- Express中间件之body-parser
- Replica Set设置一个延迟复制副本集成员
- 我发现了一个贼屌的大神的博客。这个帖子只为存储他的博客地址