作者 杨谦

1.处理变更

@@ -173,7 +173,8 @@ @@ -173,7 +173,8 @@
173 <activity android:name="com.br_technology.securitytrain_master.ui.view.mine.activity.LearningReportDetailActivity" /> 173 <activity android:name="com.br_technology.securitytrain_master.ui.view.mine.activity.LearningReportDetailActivity" />
174 <activity android:name="com.br_technology.securitytrain_master.ui.view.mine.activity.MessageNoticeActivity" /> 174 <activity android:name="com.br_technology.securitytrain_master.ui.view.mine.activity.MessageNoticeActivity" />
175 <activity android:name="com.br_technology.securitytrain_master.ui.view.mine.activity.MessageNoticeDetailActivity" /> 175 <activity android:name="com.br_technology.securitytrain_master.ui.view.mine.activity.MessageNoticeDetailActivity" />
176 - <activity android:name="com.br_technology.securitytrain_master.ui.view.mine.activity.ComplaintsAndSuggestionsActivity" /> 176 + <activity android:name="com.br_technology.securitytrain_master.ui.view.mine.activity.ComplaintsAndSuggestionsActivity"
  177 + android:theme="@style/AppBaseTheme"/>
177 <activity android:name="com.br_technology.securitytrain_master.ui.view.mine.activity.ComplaintsAndSuggestionsSuccessActivity" /> 178 <activity android:name="com.br_technology.securitytrain_master.ui.view.mine.activity.ComplaintsAndSuggestionsSuccessActivity" />
178 <activity android:name="com.br_technology.securitytrain_master.ui.view.mine.activity.ClassDutyActivity" /> 179 <activity android:name="com.br_technology.securitytrain_master.ui.view.mine.activity.ClassDutyActivity" />
179 <activity android:name="com.br_technology.securitytrain_master.ui.view.mine.activity.CollectActivity" /> 180 <activity android:name="com.br_technology.securitytrain_master.ui.view.mine.activity.CollectActivity" />
@@ -10,7 +10,8 @@ import java.io.File @@ -10,7 +10,8 @@ import java.io.File
10 */ 10 */
11 object Constant { 11 object Constant {
12 // const val BASE_URL = "https://admin.anqixing.com" 12 // const val BASE_URL = "https://admin.anqixing.com"
13 - const val BASE_URL = "https://test.admin.anqixing.com" 13 + const val BASE_URL = "https://security.brofirst.cn"
  14 +// const val BASE_URL = "https://test.admin.anqixing.com"
14 const val USERNAME_KEY = "username" 15 const val USERNAME_KEY = "username"
15 const val USERID_KEY = "userid" 16 const val USERID_KEY = "userid"
16 const val LOGIN_KEY = "login" 17 const val LOGIN_KEY = "login"
@@ -108,15 +108,11 @@ class DatabaseActivity : @@ -108,15 +108,11 @@ class DatabaseActivity :
108 108
109 fun refresh() { 109 fun refresh() {
110 page = 1 110 page = 1
111 - binding.refresh.setEnableRefresh(false)  
112 - binding.refresh.setEnableLoadMore(false)  
113 mViewModel.getDataList(page) 111 mViewModel.getDataList(page)
114 } 112 }
115 113
116 private fun loadMore() { 114 private fun loadMore() {
117 page++ 115 page++
118 - binding.refresh.setEnableRefresh(false)  
119 - binding.refresh.setEnableLoadMore(false)  
120 mViewModel.getDataList(page) 116 mViewModel.getDataList(page)
121 } 117 }
122 118
@@ -10,6 +10,7 @@ import com.br_technology.securitytrain_master.ui.bean.TrainCourseDetailItemType. @@ -10,6 +10,7 @@ import com.br_technology.securitytrain_master.ui.bean.TrainCourseDetailItemType.
10 import com.br_technology.securitytrain_master.ui.bean.TrainCourseDetailItemType.TYPE_COURSE_DETAIL_ITEM_NORMAL 10 import com.br_technology.securitytrain_master.ui.bean.TrainCourseDetailItemType.TYPE_COURSE_DETAIL_ITEM_NORMAL
11 import com.br_technology.securitytrain_master.ui.bean.TrainCourseDetailItemType.TYPE_COURSE_DETAIL_ITEM_OFF 11 import com.br_technology.securitytrain_master.ui.bean.TrainCourseDetailItemType.TYPE_COURSE_DETAIL_ITEM_OFF
12 import com.br_technology.securitytrain_master.ui.bean.TrainCourseDetailItemType.TYPE_COURSE_DETAIL_ITEM_VIDEO 12 import com.br_technology.securitytrain_master.ui.bean.TrainCourseDetailItemType.TYPE_COURSE_DETAIL_ITEM_VIDEO
  13 +import com.br_technology.securitytrain_master.util.TimeFenMUtils
13 import com.chad.library.adapter.base.BaseMultiItemQuickAdapter 14 import com.chad.library.adapter.base.BaseMultiItemQuickAdapter
14 import com.chad.library.adapter.base.BaseQuickAdapter 15 import com.chad.library.adapter.base.BaseQuickAdapter
15 import com.chad.library.adapter.base.viewholder.BaseViewHolder 16 import com.chad.library.adapter.base.viewholder.BaseViewHolder
@@ -164,7 +165,7 @@ class CourseDetailChildAdapter : @@ -164,7 +165,7 @@ class CourseDetailChildAdapter :
164 } else { 165 } else {
165 "已完成" 166 "已完成"
166 } 167 }
167 - }${data.video_length}" 168 + }${formatLength(data.video_length)}"
168 ) 169 )
169 holder.setText(R.id.tv_index, "${item.pos + 1}.${holder.layoutPosition + 1}") 170 holder.setText(R.id.tv_index, "${item.pos + 1}.${holder.layoutPosition + 1}")
170 } 171 }
@@ -173,13 +174,9 @@ class CourseDetailChildAdapter : @@ -173,13 +174,9 @@ class CourseDetailChildAdapter :
173 val data = item.lessonVideoNormalChild 174 val data = item.lessonVideoNormalChild
174 data?.apply { 175 data?.apply {
175 holder.setText(R.id.tv_name, data.name) 176 holder.setText(R.id.tv_name, data.name)
176 - holder.setText(R.id.tv_time, "${  
177 - if (data.is_complete == 0) {  
178 - "未完成"  
179 - } else {  
180 - "已完成"  
181 - }  
182 - }${data.video_length}") 177 + holder.setText(
  178 + R.id.tv_time, formatLength(data.video_length)
  179 + )
183 holder.setText(R.id.tv_index, "${item.pos + 1}.${holder.layoutPosition + 1}") 180 holder.setText(R.id.tv_index, "${item.pos + 1}.${holder.layoutPosition + 1}")
184 } 181 }
185 } 182 }
@@ -208,4 +205,13 @@ class CourseDetailChildAdapter : @@ -208,4 +205,13 @@ class CourseDetailChildAdapter :
208 } 205 }
209 } 206 }
210 } 207 }
  208 +
  209 + private fun formatLength(str: String): String {
  210 + val temp = if (str.contains(".")) {
  211 + str.subSequence(0, str.lastIndexOf("."))
  212 + } else {
  213 + str
  214 + }
  215 + return TimeFenMUtils.formatHour(temp.toString())
  216 + }
211 } 217 }
@@ -19,7 +19,7 @@ class TextLessonsAdapter(layoutResId: Int, data: MutableList<TextLessonBean.List @@ -19,7 +19,7 @@ class TextLessonsAdapter(layoutResId: Int, data: MutableList<TextLessonBean.List
19 LoadMoreModule { 19 LoadMoreModule {
20 override fun convert(holder: BaseViewHolder, item: TextLessonBean.ListBean.DataBean) { 20 override fun convert(holder: BaseViewHolder, item: TextLessonBean.ListBean.DataBean) {
21 holder.setText(R.id.name, item.name) 21 holder.setText(R.id.name, item.name)
22 - holder.setText(R.id.info, item.des) 22 + holder.setText(R.id.info, item.intro)
23 Glide.with(context).load(item.image) 23 Glide.with(context).load(item.image)
24 .apply(RequestOptions.bitmapTransform(RoundedCorners(16))) 24 .apply(RequestOptions.bitmapTransform(RoundedCorners(16)))
25 .into(holder.getView(R.id.pic)) 25 .into(holder.getView(R.id.pic))
1 package com.br_technology.securitytrain_master.ui.view.mine.activity 1 package com.br_technology.securitytrain_master.ui.view.mine.activity
2 2
3 -import android.view.View  
4 -import android.widget.TextView  
5 -import com.bigkoo.pickerview.builder.OptionsPickerBuilder  
6 import com.bigkoo.pickerview.view.OptionsPickerView 3 import com.bigkoo.pickerview.view.OptionsPickerView
7 import com.br_technology.securitytrain_master.R 4 import com.br_technology.securitytrain_master.R
8 import com.br_technology.securitytrain_master.databinding.ActivityComplaintsAndSuggestionsBinding 5 import com.br_technology.securitytrain_master.databinding.ActivityComplaintsAndSuggestionsBinding
9 import com.br_technology.securitytrain_master.ui.view.mine.bean.FeedBackTypeBean 6 import com.br_technology.securitytrain_master.ui.view.mine.bean.FeedBackTypeBean
10 import com.br_technology.securitytrain_master.ui.view.mine.viewmodel.ComplaintsAndSuggestionsViewModel 7 import com.br_technology.securitytrain_master.ui.view.mine.viewmodel.ComplaintsAndSuggestionsViewModel
  8 +import com.br_technology.securitytrain_master.view.DialogFeedType
11 import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleActivity 9 import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleActivity
12 10
13 11
@@ -30,7 +28,7 @@ class ComplaintsAndSuggestionsActivity : @@ -30,7 +28,7 @@ class ComplaintsAndSuggestionsActivity :
30 private var is_hide: String = "0" 28 private var is_hide: String = "0"
31 29
32 override fun initDataObserver() { 30 override fun initDataObserver() {
33 - mViewModel.mCommonBean.observe(this,{ 31 + mViewModel.mCommonBean.observe(this, {
34 startActivity(ComplaintsAndSuggestionsSuccessActivity::class.java) 32 startActivity(ComplaintsAndSuggestionsSuccessActivity::class.java)
35 finish() 33 finish()
36 }) 34 })
@@ -114,47 +112,25 @@ class ComplaintsAndSuggestionsActivity : @@ -114,47 +112,25 @@ class ComplaintsAndSuggestionsActivity :
114 } 112 }
115 //投诉类型 113 //投诉类型
116 llType.setOnClickListener { 114 llType.setOnClickListener {
117 - initCustomOptionPicker() 115 +// initCustomOptionPicker()
  116 + dialogShow()
118 } 117 }
119 } 118 }
120 } 119 }
121 120
122 - private fun initCustomOptionPicker() { //条件选择器初始化,自定义布局  
123 - /**  
124 - * @description  
125 - *  
126 - * 注意事项:  
127 - * 自定义布局中,id为 optionspicker 或者 timepicker 的布局以及其子控件必须要有,否则会报空指针。  
128 - * 具体可参考demo 里面的两个自定义layout布局。  
129 - */  
130 - cardItem = mutableListOf()  
131 - cardItem?.add(FeedBackTypeBean("功能异常"))  
132 - cardItem?.add(FeedBackTypeBean("体验问题"))  
133 - cardItem?.add(FeedBackTypeBean("功能建议"))  
134 - cardItem?.add(FeedBackTypeBean("服务投诉"))  
135 - cardItem?.add(FeedBackTypeBean("其他问题")) 121 + private var dialogFeedType: DialogFeedType? = null
136 122
137 - pvCustomOptions = OptionsPickerBuilder(  
138 - this  
139 - ) { options1, _, _, _ -> //返回的分别是三个级别的选中位置  
140 - val tx: String = cardItem!![options1].pickerViewText  
141 - binding.tvType.text = tx 123 + private fun dialogShow() {
  124 + if (dialogFeedType == null) {
  125 + dialogFeedType =
  126 + DialogFeedType(this).setListener(object : DialogFeedType.ISelectFeedType {
  127 + override fun select(content: String, index: Int) {
  128 + binding.tvType.text = content
  129 + type = "${index + 1}"
  130 + }
  131 + })
142 } 132 }
143 - .setLayoutRes(  
144 - R.layout.layout_tousu_type  
145 - ) { v ->  
146 - val tvSubmit = v.findViewById<View>(R.id.tv_finish) as TextView  
147 - val ivCancel: TextView = v.findViewById<View>(R.id.iv_cancel) as TextView  
148 - tvSubmit.setOnClickListener {  
149 - pvCustomOptions?.returnData()  
150 - pvCustomOptions?.dismiss()  
151 - }  
152 - ivCancel.setOnClickListener { pvCustomOptions?.dismiss() }  
153 - }  
154 - .setSelectOptions(0)  
155 - .setOutSideCancelable(false)  
156 - .build()  
157 - pvCustomOptions?.setPicker(cardItem) //添加数据  
158 - pvCustomOptions?.show() 133 + dialogFeedType?.show()
159 } 134 }
  135 +
160 } 136 }
@@ -37,8 +37,8 @@ class MyErrorQuestionActivity : @@ -37,8 +37,8 @@ class MyErrorQuestionActivity :
37 val list = 37 val list =
38 mutableListOf( 38 mutableListOf(
39 MyErrorQuestionFragment.newInstance(1), 39 MyErrorQuestionFragment.newInstance(1),
40 - MyErrorQuestionFragment.newInstance(2),  
41 - MyErrorQuestionFragment.newInstance(3) 40 + MyErrorQuestionFragment.newInstance(3),
  41 + MyErrorQuestionFragment.newInstance(2)
42 ) 42 )
43 val titles = listOf("单选题", "判断题", "多选题") 43 val titles = listOf("单选题", "判断题", "多选题")
44 searchResultAdapter.addData(list.toMutableList()) 44 searchResultAdapter.addData(list.toMutableList())
1 package com.br_technology.securitytrain_master.ui.view.mine.adapter 1 package com.br_technology.securitytrain_master.ui.view.mine.adapter
2 2
3 -import android.content.Context  
4 -import android.view.LayoutInflater  
5 -import android.view.ViewGroup  
6 import com.br_technology.securitytrain_master.R 3 import com.br_technology.securitytrain_master.R
7 -import com.br_technology.securitytrain_master.base.view.BaseAdapter  
8 -import com.br_technology.securitytrain_master.databinding.ItemSpecialExercisesBinding  
9 import com.br_technology.securitytrain_master.ui.bean.AnswerRecord 4 import com.br_technology.securitytrain_master.ui.bean.AnswerRecord
10 -import com.br_technology.securitytrain_master.ui.view.home.pojo.VideoCourse  
11 import com.chad.library.adapter.base.BaseQuickAdapter 5 import com.chad.library.adapter.base.BaseQuickAdapter
12 import com.chad.library.adapter.base.viewholder.BaseViewHolder 6 import com.chad.library.adapter.base.viewholder.BaseViewHolder
13 7
@@ -16,23 +10,11 @@ import com.chad.library.adapter.base.viewholder.BaseViewHolder @@ -16,23 +10,11 @@ import com.chad.library.adapter.base.viewholder.BaseViewHolder
16 * Author: Captain 10 * Author: Captain
17 * Description: 初见时你很迷人 11 * Description: 初见时你很迷人
18 */ 12 */
19 -class SpecialExercisesAdapter : BaseQuickAdapter<AnswerRecord,BaseViewHolder>(R.layout.item_special_exercises) { 13 +class SpecialExercisesAdapter :
  14 + BaseQuickAdapter<AnswerRecord, BaseViewHolder>(R.layout.item_special_exercises) {
20 override fun convert(holder: BaseViewHolder, item: AnswerRecord) { 15 override fun convert(holder: BaseViewHolder, item: AnswerRecord) {
21 - holder.setText(R.id.tv_question_title,item.title)  
22 - .setText(R.id.tv_timer,item.create_time_text)  
23 - .setText(R.id.tv_answer,"答对:${item.correct}/${item.count}") 16 + holder.setText(R.id.tv_question_title, "${item.title}(${item.pos.name ?: ""})")
  17 + .setText(R.id.tv_timer, item.create_time_text)
  18 + .setText(R.id.tv_answer, "答对:${item.correct}/${item.count}")
24 } 19 }
25 -// override fun getViewBinding(  
26 -// context: Context,  
27 -// parent: ViewGroup,  
28 -// viewType: Int,  
29 -// from: LayoutInflater  
30 -// ): ItemSpecialExercisesBinding {  
31 -// return ItemSpecialExercisesBinding.inflate(from, parent, false)  
32 -// }  
33 -//  
34 -// override fun onBind(holder: ItemSpecialExercisesBinding, position: Int, data: VideoCourse) {  
35 -// // 题名称  
36 -// holder.tvQuestionTitle.text = data.courseName  
37 -// }  
38 } 20 }
@@ -52,6 +52,11 @@ class ClassDutyCourseFragment(val type: Int) : @@ -52,6 +52,11 @@ class ClassDutyCourseFragment(val type: Int) :
52 super.onDestroyView() 52 super.onDestroyView()
53 } 53 }
54 54
  55 + override fun onResume() {
  56 + super.onResume()
  57 + refreshData()
  58 + }
  59 +
55 @Subscribe 60 @Subscribe
56 fun statusChange(status: StatusTypeEvent) { 61 fun statusChange(status: StatusTypeEvent) {
57 this.status = status.id 62 this.status = status.id
@@ -227,11 +232,6 @@ class ClassDutyCourseFragment(val type: Int) : @@ -227,11 +232,6 @@ class ClassDutyCourseFragment(val type: Int) :
227 return response 232 return response
228 } 233 }
229 234
230 - override fun initData() {  
231 - super.initData()  
232 - getData()  
233 - }  
234 -  
235 val dialogMention: DialogMention by lazy { 235 val dialogMention: DialogMention by lazy {
236 DialogMention(requireContext()).apply { 236 DialogMention(requireContext()).apply {
237 setTitle("温馨提示") 237 setTitle("温馨提示")
@@ -241,8 +241,6 @@ class ClassDutyCourseFragment(val type: Int) : @@ -241,8 +241,6 @@ class ClassDutyCourseFragment(val type: Int) :
241 241
242 //todo 时间校验限制等 242 //todo 时间校验限制等
243 fun checkTime(exam: ExamBean) { 243 fun checkTime(exam: ExamBean) {
244 -  
245 -  
246 } 244 }
247 245
248 override fun itemClick(item: TrainTestData) { 246 override fun itemClick(item: TrainTestData) {
1 package com.br_technology.securitytrain_master.util; 1 package com.br_technology.securitytrain_master.util;
2 2
3 -import android.content.Intent;  
4 -import android.util.Log;  
5 -  
6 -import com.luck.picture.lib.tools.StringUtils;  
7 -  
8 import java.math.BigDecimal; 3 import java.math.BigDecimal;
9 4
10 public class TimeFenMUtils { 5 public class TimeFenMUtils {
@@ -27,12 +22,16 @@ public class TimeFenMUtils { @@ -27,12 +22,16 @@ public class TimeFenMUtils {
27 } else { 22 } else {
28 DateTimes = seconds + ""; 23 DateTimes = seconds + "";
29 } 24 }
30 -  
31 return DateTimes; 25 return DateTimes;
32 } 26 }
33 27
34 -  
35 - 28 + public static String formatHour(String seconds) {
  29 + long mss = BigDecimal.valueOf(Double.parseDouble(seconds)).longValue();
  30 + long hours = mss / (60 * 60);
  31 + long minutes = (mss % (60 * 60)) / 60;
  32 + long second = mss % 60;
  33 + return (hours > 9 ? hours + "" : "0" + hours) + ":" + (minutes > 9 ? minutes : "0" + minutes) + ":" + (second > 9 ? second : "0" + second);
  34 + }
36 35
37 } 36 }
38 37
  1 +package com.br_technology.securitytrain_master.view
  2 +
  3 +import android.app.Dialog
  4 +import android.content.Context
  5 +import android.os.Bundle
  6 +import android.view.LayoutInflater
  7 +import com.br_technology.securitytrain_master.R
  8 +import com.br_technology.securitytrain_master.databinding.DialogFeedTypeBinding
  9 +import com.br_technology.securitytrain_master.expand.dp2px
  10 +import com.br_technology.securitytrain_master.expand.screenWidth
  11 +
  12 +/**
  13 + * Author by YSir
  14 + * Date on 2022/3/15.
  15 + * description 反馈类型单选弹框
  16 + * PS: Not easy to write code, please indicate.
  17 + */
  18 +class DialogFeedType(context: Context) : Dialog(context, R.style.UserDefaultDialog) {
  19 + private val binding by lazy {
  20 + DialogFeedTypeBinding.inflate(LayoutInflater.from(context))
  21 + }
  22 +
  23 + interface ISelectFeedType {
  24 + fun select(content: String, index: Int)
  25 + }
  26 +
  27 + private var mSelectListener: ISelectFeedType? = null
  28 +
  29 + fun setListener(select: ISelectFeedType): DialogFeedType {
  30 + this.mSelectListener = select
  31 + return this
  32 + }
  33 +
  34 + override fun onCreate(savedInstanceState: Bundle?) {
  35 + super.onCreate(savedInstanceState)
  36 + setContentView(binding.root)
  37 + val attributes = window?.attributes
  38 + attributes?.width = binding.root.screenWidth() - 32.dp2px()
  39 + // 点击区域外取消
  40 + setCanceledOnTouchOutside(true)
  41 + setCancelable(true)
  42 + binding.apply {
  43 + val listRadiusView =
  44 + listOf(feedRadius1, feedRadius2, feedRadius3, feedRadius4, feedRadius5)
  45 + val listTextView =
  46 + listOf(feedText1, feedText2, feedText3, feedText4, feedText5)
  47 +
  48 + val listTouchView = listOf(feedType1, feedType2, feedType3, feedType4, feedType5)
  49 + for ((position, radius) in listRadiusView.withIndex()) {
  50 + radius.setOnCheckedChangeListener { _, isChecked ->
  51 + if (isChecked) {
  52 + mSelectListener?.select(
  53 + listTextView[position].text.toString(),
  54 + position
  55 + )
  56 + for ((index, radiusChild) in listRadiusView.withIndex()) {
  57 + if (index != position) {
  58 + radiusChild.isChecked = false
  59 + }
  60 + }
  61 + dismiss()
  62 + }
  63 + }
  64 + }
  65 + for ((index, touch) in listTouchView.withIndex()) {
  66 + touch.setOnClickListener {
  67 + if (it.isPressed) {
  68 + for ((position, radius) in listRadiusView.withIndex()) {
  69 + radius.isChecked = position == index
  70 + }
  71 + }
  72 + }
  73 + }
  74 + }
  75 + }
  76 +}
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:layout_width="match_parent"
  4 + android:layout_height="wrap_content"
  5 + android:background="@color/white"
  6 + android:orientation="vertical">
  7 +
  8 + <TextView
  9 + style="@style/TextSingle"
  10 + android:text="选择投诉类型" />
  11 +
  12 + <View style="@style/Space" />
  13 +
  14 + <LinearLayout
  15 + android:id="@+id/feed_type_1"
  16 + style="@style/LinearText">
  17 +
  18 + <TextView
  19 + android:id="@+id/feed_text_1"
  20 + style="@style/TextLeft"
  21 + android:text="功能异常" />
  22 +
  23 + <RadioButton
  24 + android:id="@+id/feed_radius_1"
  25 + style="@style/RadiusRight" />
  26 + </LinearLayout>
  27 +
  28 + <View style="@style/Space" />
  29 +
  30 + <LinearLayout
  31 + android:id="@+id/feed_type_2"
  32 + style="@style/LinearText">
  33 +
  34 + <TextView
  35 + android:id="@+id/feed_text_2"
  36 + style="@style/TextLeft"
  37 + android:text="体验问题" />
  38 +
  39 + <RadioButton
  40 + android:id="@+id/feed_radius_2"
  41 + style="@style/RadiusRight" />
  42 + </LinearLayout>
  43 +
  44 + <View style="@style/Space" />
  45 +
  46 + <LinearLayout
  47 + android:id="@+id/feed_type_3"
  48 + style="@style/LinearText">
  49 +
  50 + <TextView
  51 + android:id="@+id/feed_text_3"
  52 + style="@style/TextLeft"
  53 + android:text="功能建议" />
  54 +
  55 + <RadioButton
  56 + android:id="@+id/feed_radius_3"
  57 + style="@style/RadiusRight" />
  58 + </LinearLayout>
  59 +
  60 + <View style="@style/Space" />
  61 +
  62 + <LinearLayout
  63 + android:id="@+id/feed_type_4"
  64 + style="@style/LinearText">
  65 +
  66 + <TextView
  67 + android:id="@+id/feed_text_4"
  68 + style="@style/TextLeft"
  69 + android:text="服务投诉" />
  70 +
  71 + <RadioButton
  72 + android:id="@+id/feed_radius_4"
  73 + style="@style/RadiusRight" />
  74 + </LinearLayout>
  75 +
  76 + <View style="@style/Space" />
  77 +
  78 + <LinearLayout
  79 + android:id="@+id/feed_type_5"
  80 + style="@style/LinearText">
  81 +
  82 + <TextView
  83 + android:id="@+id/feed_text_5"
  84 + style="@style/TextLeft"
  85 + android:text="其他问题" />
  86 +
  87 + <RadioButton
  88 + android:id="@+id/feed_radius_5"
  89 + style="@style/RadiusRight" />
  90 + </LinearLayout>
  91 +</LinearLayout>
@@ -28,8 +28,6 @@ @@ -28,8 +28,6 @@
28 android:id="@+id/recyclerview" 28 android:id="@+id/recyclerview"
29 android:layout_width="match_parent" 29 android:layout_width="match_parent"
30 android:layout_height="match_parent" 30 android:layout_height="match_parent"
31 - android:layout_marginStart="16dp"  
32 - android:layout_marginEnd="16dp"  
33 android:layout_marginTop="16dp" 31 android:layout_marginTop="16dp"
34 android:overScrollMode="never" 32 android:overScrollMode="never"
35 android:scrollbars="none" 33 android:scrollbars="none"
@@ -18,5 +18,6 @@ @@ -18,5 +18,6 @@
18 android:layout_height="wrap_content" 18 android:layout_height="wrap_content"
19 android:layout_gravity="center" 19 android:layout_gravity="center"
20 android:textColor="@color/black" 20 android:textColor="@color/black"
  21 + android:layout_marginBottom="32dp"
21 android:text="上传证件"/> 22 android:text="上传证件"/>
22 </LinearLayout> 23 </LinearLayout>
@@ -22,7 +22,7 @@ @@ -22,7 +22,7 @@
22 22
23 <TextView 23 <TextView
24 android:id="@+id/tv_question_title" 24 android:id="@+id/tv_question_title"
25 - android:layout_width="wrap_content" 25 + android:layout_width="0dp"
26 android:layout_height="wrap_content" 26 android:layout_height="wrap_content"
27 android:layout_marginStart="12dp" 27 android:layout_marginStart="12dp"
28 android:layout_marginTop="16dp" 28 android:layout_marginTop="16dp"
1 <?xml version="1.0" encoding="utf-8"?> 1 <?xml version="1.0" encoding="utf-8"?>
2 <resources> 2 <resources>
  3 + <style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
  4 +
  5 + <item name="colorPrimary">@color/text_light_gray</item>
  6 + <!-- 状态栏颜色 -->
  7 + <item name="colorPrimaryDark">@color/text_light_gray</item>
  8 +
  9 + <!--按钮选中或者点击获得焦点后的颜色-->
  10 + <item name="colorAccent">@color/color_25</item>
  11 +
  12 + <!--控制searchView的icon颜色的设置-->
  13 + <item name="colorControlNormal">@color/text_light_gray</item>
  14 + <!--Button按钮正常状态颜色-->
  15 + <item name="colorButtonNormal">@color/text_light_gray</item>
  16 + <!--EditText 输入框中字体的颜色-->
  17 + <item name="editTextColor">@android:color/white</item>
  18 + <!-- 窗口的背景颜色 -->
  19 + <item name="android:windowBackground">@android:color/white</item>
  20 + <!--导航栏上的标题颜色-->
  21 + <item name="android:textColorPrimary">@color/black</item>
  22 + <item name="android:listDivider">@color/text_light_gray</item>
  23 +
  24 + </style>
3 25
4 <style name="dialog_progress" parent="@android:style/Theme.Dialog"> 26 <style name="dialog_progress" parent="@android:style/Theme.Dialog">
5 <item name="android:windowBackground">@color/transparent</item><!--背景透明--> 27 <item name="android:windowBackground">@color/transparent</item><!--背景透明-->
@@ -17,6 +39,7 @@ @@ -17,6 +39,7 @@
17 <attr name="bord_width" format="dimension" /> 39 <attr name="bord_width" format="dimension" />
18 <attr name="bord_color" format="color" /> 40 <attr name="bord_color" format="color" />
19 </declare-styleable> 41 </declare-styleable>
  42 +
20 <style name="mProgress_circle"> 43 <style name="mProgress_circle">
21 <item name="android:indeterminateDrawable">@anim/progress_circle_shape</item> 44 <item name="android:indeterminateDrawable">@anim/progress_circle_shape</item>
22 <item name="android:minWidth">25dp</item> 45 <item name="android:minWidth">25dp</item>
@@ -78,4 +101,41 @@ @@ -78,4 +101,41 @@
78 <item name="android:windowFullscreen">true</item> 101 <item name="android:windowFullscreen">true</item>
79 </style> 102 </style>
80 103
  104 + <style name="TextSingle">
  105 + <item name="android:gravity">center_vertical|start</item>
  106 + <item name="android:layout_width">match_parent</item>
  107 + <item name="android:layout_height">52dp</item>
  108 + <item name="android:textSize">18sp</item>
  109 + <item name="android:paddingEnd">16dp</item>
  110 + <item name="android:paddingStart">16dp</item>
  111 + <item name="android:textColor">@color/black</item>
  112 + </style>
  113 +
  114 + <style name="TextLeft" parent="@style/TextSingle">
  115 + <item name="android:layout_width">0dp</item>
  116 + <item name="android:layout_weight">1</item>
  117 + <item name="android:paddingEnd">0dp</item>
  118 + <item name="android:paddingStart">0dp</item>
  119 + </style>
  120 +
  121 + <style name="LinearText">
  122 + <item name="android:layout_width">match_parent</item>
  123 + <item name="android:layout_height">52dp</item>
  124 + <item name="android:paddingEnd">16dp</item>
  125 + <item name="android:paddingStart">16dp</item>
  126 + <item name="android:orientation">horizontal</item>
  127 + <item name="android:gravity">center_vertical</item>
  128 + <item name="android:foreground">?android:attr/selectableItemBackground</item>
  129 + </style>
  130 +
  131 + <style name="RadiusRight">
  132 + <item name="android:layout_width">wrap_content</item>
  133 + <item name="android:layout_height">52dp</item>
  134 + </style>
  135 +
  136 + <style name="Space">
  137 + <item name="android:layout_width">match_parent</item>
  138 + <item name="android:layout_height">0.5dp</item>
  139 + <item name="android:background">@color/text_light_gray</item>
  140 + </style>
81 </resources> 141 </resources>