增加道路属性面板
This commit is contained in:
squallzhjch 2023-05-23 09:48:07 +08:00
parent 00f39555ab
commit dc6b4b91e5
22 changed files with 242 additions and 82 deletions

View File

@ -6,7 +6,7 @@ import kotlinx.parcelize.Parcelize
@Parcelize @Parcelize
data class SignBean( data class SignBean(
//图标ID //图标ID
val iconId: Int, var iconId: Int = 0,
//定位点到目标距离 //定位点到目标距离
val distance: Int = 0, val distance: Int = 0,
//图表中的问题 //图表中的问题
@ -18,7 +18,7 @@ data class SignBean(
//坐标 //坐标
val geometry: String, val geometry: String,
//底部文字 //底部文字
val bottomText: String, val name: String,
//底部右侧文字 //底部右侧文字
val bottomRightText: String, val bottomRightText: String,
//要素code类型 //要素code类型

View File

@ -12,6 +12,7 @@ import androidx.databinding.DataBindingUtil
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.findNavController import androidx.navigation.findNavController
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.blankj.utilcode.util.SPStaticUtils import com.blankj.utilcode.util.SPStaticUtils
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.reflect.TypeToken import com.google.gson.reflect.TypeToken
@ -23,6 +24,7 @@ import com.navinfo.omqs.databinding.ActivityMainBinding
import com.navinfo.omqs.http.offlinemapdownload.OfflineMapDownloadManager import com.navinfo.omqs.http.offlinemapdownload.OfflineMapDownloadManager
import com.navinfo.omqs.tools.LayerConfigUtils import com.navinfo.omqs.tools.LayerConfigUtils
import com.navinfo.omqs.ui.activity.BaseActivity import com.navinfo.omqs.ui.activity.BaseActivity
import com.navinfo.omqs.ui.widget.RecycleViewDivider
import com.navinfo.omqs.util.FlowEventBus import com.navinfo.omqs.util.FlowEventBus
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -52,12 +54,11 @@ class MainActivity : BaseActivity() {
findNavController(R.id.main_activity_right_fragment) findNavController(R.id.main_activity_right_fragment)
} }
/**
* 提前显示要素看板
*/
private val signAdapter by lazy { private val signAdapter by lazy {
SignAdapter { position, signBean -> SignAdapter { position, signBean ->
// val directions =
// EmptyFragmentDirections.emptyFragmentToEvaluationResultFragment(
// )
// rightController.navigate(directions)
rightController.currentDestination?.let { rightController.currentDestination?.let {
if (it.id == R.id.EmptyFragment) { if (it.id == R.id.EmptyFragment) {
val bundle = Bundle() val bundle = Bundle()
@ -68,6 +69,22 @@ class MainActivity : BaseActivity() {
} }
} }
/**
* 道路信息看板
*/
private val topSignAdapter by lazy {
TopSignAdapter { position, signBean ->
rightController.currentDestination?.let {
if (it.id == R.id.EmptyFragment) {
val bundle = Bundle()
bundle.putParcelable("SignBean", signBean)
rightController.navigate(R.id.EvaluationResultFragment, bundle)
}
}
}
}
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
WindowCompat.setDecorFitsSystemWindows(window, false) WindowCompat.setDecorFitsSystemWindows(window, false)
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -125,6 +142,18 @@ class MainActivity : BaseActivity() {
} }
//道路属性面板
binding.mainActivityTopSignRecyclerview.layoutManager = LinearLayoutManager(
this,
RecyclerView.HORIZONTAL, false
)
binding.mainActivityTopSignRecyclerview.addItemDecoration(
RecycleViewDivider(this, LinearLayoutManager.HORIZONTAL)
)
binding.mainActivityTopSignRecyclerview.adapter = topSignAdapter
//提前显示面板
binding.mainActivitySignRecyclerview.layoutManager = LinearLayoutManager(this) binding.mainActivitySignRecyclerview.layoutManager = LinearLayoutManager(this)
binding.mainActivitySignRecyclerview.adapter = signAdapter binding.mainActivitySignRecyclerview.adapter = signAdapter
//增加4dp的间隔 //增加4dp的间隔
@ -139,6 +168,10 @@ class MainActivity : BaseActivity() {
signAdapter.refreshData(it) signAdapter.refreshData(it)
} }
viewModel.liveDataTopSignList.observe(this) {
topSignAdapter.refreshData(it)
}
lifecycleScope.launch { lifecycleScope.launch {
// 初始化地图图层控制接收器 // 初始化地图图层控制接收器
FlowEventBus.subscribe<List<ImportConfig>>( FlowEventBus.subscribe<List<ImportConfig>>(

View File

@ -67,9 +67,12 @@ class MainViewModel @Inject constructor(
//地图点击捕捉到的质检数据ID列表 //地图点击捕捉到的质检数据ID列表
val liveDataQsRecordIdList = MutableLiveData<List<String>>() val liveDataQsRecordIdList = MutableLiveData<List<String>>()
//看板数据 //左侧看板数据
val liveDataSignList = MutableLiveData<List<SignBean>>() val liveDataSignList = MutableLiveData<List<SignBean>>()
//顶部看板数据
val liveDataTopSignList = MutableLiveData<List<SignBean>>()
// var testPoint = GeoPoint(0, 0) // var testPoint = GeoPoint(0, 0)
//语音窗体 //语音窗体
@ -150,8 +153,7 @@ class MainViewModel @Inject constructor(
// location.latitude = testPoint.latitude // location.latitude = testPoint.latitude
val geometry = GeometryTools.createGeometry( val geometry = GeometryTools.createGeometry(
GeoPoint( GeoPoint(
location.latitude, location.latitude, location.longitude
location.longitude
) )
) )
val tileX = RealmSet<Int>() val tileX = RealmSet<Int>()
@ -176,8 +178,7 @@ class MainViewModel @Inject constructor(
mapController.locationLayerHandler.niLocationFlow.collectLatest { location -> mapController.locationLayerHandler.niLocationFlow.collectLatest { location ->
// location.longitude = testPoint.longitude // location.longitude = testPoint.longitude
// location.latitude = testPoint.latitude // location.latitude = testPoint.latitude
if (!isSelectRoad()) if (!isSelectRoad()) captureLink(GeoPoint(location.latitude, location.longitude))
captureLink(GeoPoint(location.latitude, location.longitude))
} }
} }
@ -196,6 +197,8 @@ class MainViewModel @Inject constructor(
) )
//看板数据 //看板数据
val signList = mutableListOf<SignBean>() val signList = mutableListOf<SignBean>()
val topSignList = mutableListOf<SignBean>()
if (linkList.isNotEmpty()) { if (linkList.isNotEmpty()) {
val link = linkList[0] val link = linkList[0]
val linkId = link.properties[RenderEntity.Companion.LinkTable.linkPid] val linkId = link.properties[RenderEntity.Companion.LinkTable.linkPid]
@ -204,27 +207,36 @@ class MainViewModel @Inject constructor(
var elementList = realmOperateHelper.queryLinkByLinkPid(it) var elementList = realmOperateHelper.queryLinkByLinkPid(it)
for (element in elementList) { for (element in elementList) {
val distance = GeometryTools.distanceToDouble( val distance = GeometryTools.distanceToDouble(
point, point, GeometryTools.createGeoPoint(element.geometry)
GeometryTools.createGeoPoint(element.geometry)
) )
signList.add(
SignBean( val signBean = SignBean(
iconId = SignUtil.getSignIcon(element), iconId = SignUtil.getSignIcon(element),
iconText = SignUtil.getSignIconText(element), iconText = SignUtil.getSignIconText(element),
distance = distance.toInt(), distance = distance.toInt(),
elementId = element.id, elementId = element.id,
linkId = linkId, linkId = linkId,
geometry = element.geometry, geometry = element.geometry,
bottomText = SignUtil.getSignBottomText(element), name = SignUtil.getSignNameText(element),
bottomRightText = SignUtil.getSignBottomRightText(element), bottomRightText = SignUtil.getSignBottomRightText(element),
elementCode = element.code elementCode = element.code
)
when (element.code) {
2041, 2008 -> topSignList.add(
signBean
) )
) else -> signList.add(
signBean
)
}
} }
} }
} }
liveDataSignList.postValue(signList) liveDataTopSignList.postValue(topSignList.distinctBy { it.elementCode })
liveDataSignList.postValue(signList.distinctBy { it.elementCode })
Log.e("jingo", "自动捕捉数据 共${signList.size}") Log.e("jingo", "自动捕捉数据 共${signList.size}")
} }
} }

View File

@ -23,9 +23,10 @@ class SignAdapter(private var itemListener: ((Int, SignBean) -> Unit?)? = null)
override fun onBindViewHolder(holder: BaseViewHolder, position: Int) { override fun onBindViewHolder(holder: BaseViewHolder, position: Int) {
val bd = holder.viewBinding as AdapterSignBinding val bd = holder.viewBinding as AdapterSignBinding
val item = data[position] val item = data[position]
bd.signMainIcon.background = holder.viewBinding.root.context.getDrawable(item.iconId) if (item.iconId != 0)
bd.signMainIcon.background = holder.viewBinding.root.context.getDrawable(item.iconId)
bd.signMainIcon.text = item.iconText bd.signMainIcon.text = item.iconText
bd.signBottomText.text = item.bottomText bd.signBottomText.text = item.name
bd.signBottomRightText.text = item.bottomRightText bd.signBottomRightText.text = item.bottomRightText
bd.root.setOnClickListener { bd.root.setOnClickListener {
itemListener?.invoke(position, item) itemListener?.invoke(position, item)

View File

@ -0,0 +1,34 @@
package com.navinfo.omqs.ui.activity.map
import android.view.LayoutInflater
import android.view.ViewGroup
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.SignBean
import com.navinfo.omqs.databinding.AdapterTopSignBinding
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
import com.navinfo.omqs.ui.other.BaseViewHolder
class TopSignAdapter(private var itemListener: ((Int, SignBean) -> Unit?)? = null) :
BaseRecyclerViewAdapter<SignBean>() {
override fun getItemViewRes(position: Int): Int {
return R.layout.adapter_top_sign
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
val viewBinding =
AdapterTopSignBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return BaseViewHolder(viewBinding)
}
override fun onBindViewHolder(holder: BaseViewHolder, position: Int) {
val bd = holder.viewBinding as AdapterTopSignBinding
val item = data[position]
if (item.iconId != 0)
bd.topSignText.background = holder.viewBinding.root.context.getDrawable(item.iconId)
bd.topSignName.text = item.name
bd.topSignText.text = item.iconText
bd.root.setOnClickListener {
itemListener?.invoke(position, item)
}
}
}

View File

@ -64,7 +64,7 @@ class EvaluationResultViewModel @Inject constructor(
/** /**
* 问题类型 liveData [MiddleAdapter]展示的数据 * 问题类型 liveData [MiddleAdapter]展示的数据
*/ */
val liveDataMiddleTypeList = MutableLiveData<List<String>>() // val liveDataMiddleTypeList = MutableLiveData<List<String>>()
/** /**
* 问题现象 liveData [RightGroupHeaderAdapter]展示的数据 * 问题现象 liveData [RightGroupHeaderAdapter]展示的数据
@ -240,7 +240,7 @@ class EvaluationResultViewModel @Inject constructor(
Log.e("jingo", "getProblemLinkList ${rightList[0].text}") Log.e("jingo", "getProblemLinkList ${rightList[0].text}")
} }
liveDataQsRecordBean.postValue(liveDataQsRecordBean.value) liveDataQsRecordBean.postValue(liveDataQsRecordBean.value)
liveDataMiddleTypeList.postValue(middleList) // liveDataMiddleTypeList.postValue(middleList)
liveDataRightTypeList.postValue(rightList) liveDataRightTypeList.postValue(rightList)
} }
} }
@ -272,7 +272,7 @@ class EvaluationResultViewModel @Inject constructor(
liveDataQsRecordBean.value!!.problemType = typeTitleList[0] liveDataQsRecordBean.value!!.problemType = typeTitleList[0]
Log.e("jingo", "getProblemList ${typeTitleList[0]}") Log.e("jingo", "getProblemList ${typeTitleList[0]}")
} }
liveDataMiddleTypeList.postValue(typeTitleList) // liveDataMiddleTypeList.postValue(typeTitleList)
if (liveDataQsRecordBean.value!!.phenomenon.isEmpty()) { if (liveDataQsRecordBean.value!!.phenomenon.isEmpty()) {
liveDataQsRecordBean.value!!.phenomenon = phenomenonRightList[0].text liveDataQsRecordBean.value!!.phenomenon = phenomenonRightList[0].text
Log.e("jingo", "getProblemList ${phenomenonRightList[0].text}") Log.e("jingo", "getProblemList ${phenomenonRightList[0].text}")

View File

@ -29,10 +29,18 @@ class LeftAdapter(private var itemListener: ((Int, String) -> Unit?)? = null) :
val title = data[position] val title = data[position]
bd.itemId.text = title bd.itemId.text = title
if (selectTitle == title) { if (selectTitle == title) {
bd.itemId.setBackgroundResource(R.drawable.shape_rect_white_2dp_bg) bd.itemLayout.setBackgroundColor(
holder.viewBinding.root.context.getColor(
R.color.button_press_color,
)
)
bd.itemId.setTextColor(holder.viewBinding.root.context.getColor(R.color.highFontColor)) bd.itemId.setTextColor(holder.viewBinding.root.context.getColor(R.color.highFontColor))
} else { } else {
bd.itemId.setBackgroundResource(R.drawable.shape_rect_white_2dp_bg) bd.itemLayout.setBackgroundColor(
holder.viewBinding.root.context.getColor(
R.color.white,
)
)
bd.itemId.setTextColor(holder.viewBinding.root.context.getColor(R.color.black)) bd.itemId.setTextColor(holder.viewBinding.root.context.getColor(R.color.black))
} }
bd.root.setOnClickListener { bd.root.setOnClickListener {

View File

@ -106,15 +106,15 @@ class PhenomenonFragment :
}) })
//中间菜单 // //中间菜单
binding.phenomenonMiddleRecyclerview.setHasFixedSize(true) // binding.phenomenonMiddleRecyclerview.setHasFixedSize(true)
binding.phenomenonMiddleRecyclerview.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false) // binding.phenomenonMiddleRecyclerview.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
//
binding.phenomenonMiddleRecyclerview.adapter = middleAdapter // binding.phenomenonMiddleRecyclerview.adapter = middleAdapter
//中间侧菜单查询结果监听 //中间侧菜单查询结果监听
viewModel.liveDataMiddleTypeList.observe(viewLifecycleOwner) { // viewModel.liveDataMiddleTypeList.observe(viewLifecycleOwner) {
middleAdapter.refreshData(it) // middleAdapter.refreshData(it)
} // }
// binding.phenomenonDrawer.setOnClickListener { // binding.phenomenonDrawer.setOnClickListener {
// when (binding.group.visibility) { // when (binding.group.visibility) {
// View.INVISIBLE, View.GONE -> // View.INVISIBLE, View.GONE ->

View File

@ -75,14 +75,14 @@ class ProblemLinkFragment : BaseFragment() {
} }
}) })
//中间菜单 // //中间菜单
binding.linkMiddleRecyclerview.setHasFixedSize(true) // binding.linkMiddleRecyclerview.setHasFixedSize(true)
binding.linkMiddleRecyclerview.layoutManager = LinearLayoutManager(requireContext()) // binding.linkMiddleRecyclerview.layoutManager = LinearLayoutManager(requireContext())
binding.linkMiddleRecyclerview.adapter = middleAdapter // binding.linkMiddleRecyclerview.adapter = middleAdapter
//中间侧菜单查询结果监听 //中间侧菜单查询结果监听
viewModel.liveDataMiddleTypeList.observe(viewLifecycleOwner) { // viewModel.liveDataMiddleTypeList.observe(viewLifecycleOwner) {
middleAdapter.refreshData(it) // middleAdapter.refreshData(it)
} // }
binding.linkDrawer.setOnClickListener { binding.linkDrawer.setOnClickListener {
when (binding.group.visibility) { when (binding.group.visibility) {
View.INVISIBLE, View.GONE -> View.INVISIBLE, View.GONE ->

View File

@ -11,7 +11,7 @@ class RightGroupHeaderAdapter(private var itemListener: ((Int, RightBean) -> Uni
BaseRecyclerViewAdapter<RightBean>() { BaseRecyclerViewAdapter<RightBean>() {
private var groupTitleList = mutableListOf<String>() private var groupTitleList = mutableListOf<String>()
override fun getItemViewRes(position: Int): Int { override fun getItemViewRes(position: Int): Int {
return R.layout.text_item_select return R.layout.text_item_select2
} }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {

View File

@ -7,6 +7,7 @@ import com.navinfo.omqs.R
class SignUtil { class SignUtil {
companion object { companion object {
/** /**
* 获取面板上的文字 * 获取面板上的文字
*/ */
@ -24,7 +25,7 @@ class SignUtil {
} }
} }
fun getSignBottomText(data: RenderEntity): String { fun getSignNameText(data: RenderEntity): String {
return when (data.code) { return when (data.code) {
//可变点限速 //可变点限速
4004 -> "可变点限速" 4004 -> "可变点限速"
@ -57,7 +58,7 @@ class SignUtil {
* 条件点限速文字 * 条件点限速文字
*/ */
fun getConditionLimitText(data: RenderEntity): String { private fun getConditionLimitText(data: RenderEntity): String {
var stringBuffer = StringBuffer() var stringBuffer = StringBuffer()
try { try {
val dependent = data.properties["speedDependent"] val dependent = data.properties["speedDependent"]
@ -121,7 +122,7 @@ class SignUtil {
/** /**
* 限速图标 * 限速图标
*/ */
fun getSpeedLimitIcon(data: RenderEntity): Int { private fun getSpeedLimitIcon(data: RenderEntity): Int {
try { try {
//限速标志 0 限速开始 1 限速解除 //限速标志 0 限速开始 1 限速解除
return when (data.properties["speed_flag"]) { return when (data.properties["speed_flag"]) {
@ -150,7 +151,7 @@ class SignUtil {
4002, 4003 -> getSpeedLimitIcon(data) 4002, 4003 -> getSpeedLimitIcon(data)
//可变点限速 //可变点限速
4004 -> R.drawable.icon_change_limit 4004 -> R.drawable.icon_change_limit
else -> R.drawable.icon_speed_limit else -> 0
} }
} }
@ -159,7 +160,7 @@ class SignUtil {
/** /**
* 获取种别图标 * 获取种别图标
*/ */
fun getKindCodeIcon(data: RenderEntity): Int { private fun getKindCodeIcon(data: RenderEntity): Int {
try { try {
val kind = data.properties["kind"] val kind = data.properties["kind"]
return when (kind!!.toInt()) { return when (kind!!.toInt()) {

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="@color/default_blue_text_color" />
<item android:color="@color/white" />
</selector>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/default_blue_text_color" android:state_selected="true"></item>
<item android:drawable="@color/black" />
</selector>

View File

@ -1,19 +1,19 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<!-- <padding--> <padding
<!-- android:bottom="2dp"--> android:bottom="2dp"
<!-- android:left="2dp"--> android:left="2dp"
<!-- android:right="0dp"--> android:right="2dp"
<!-- android:top="2dp" />--> android:top="2dp" />
<solid android:color="#FFFFFF" /> <solid android:color="#FFFFFF" />
<stroke <stroke
android:width="1dp" android:width="1dp"
android:color="#3756DF" /> android:color="#3756DF" />
<corners <corners
android:bottomLeftRadius="4dp" android:bottomLeftRadius="5dp"
android:bottomRightRadius="0dp" android:bottomRightRadius="0dp"
android:topLeftRadius="4dp" android:topLeftRadius="5dp"
android:topRightRadius="0dp" /> android:topRightRadius="0dp" />
</shape> </shape>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/default_button_blue_color" />
</shape>

View File

@ -51,6 +51,13 @@
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/main_activity_top_sign_recyclerview"
android:layout_width="wrap_content"
android:layout_height="60dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageButton <ImageButton
android:id="@+id/main_activity_person_center" android:id="@+id/main_activity_person_center"
@ -259,8 +266,8 @@
android:name="androidx.navigation.fragment.NavHostFragment" android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="323dp" android:layout_width="323dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="30dp"
android:layout_gravity="left" android:layout_gravity="left"
android:layout_marginTop="30dp"
app:navGraph="@navigation/left_drawer_nav_graph" /> app:navGraph="@navigation/left_drawer_nav_graph" />
</androidx.drawerlayout.widget.DrawerLayout> </androidx.drawerlayout.widget.DrawerLayout>

View File

@ -0,0 +1,28 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="match_parent"
tools:context="com.navinfo.omqs.ui.activity.map.TopSignAdapter">
<TextView
android:id="@+id/top_sign_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:gravity="center"
android:text="名称"
android:textColor="#2F2F2F"
android:textSize="14sp" />
<TextView
android:id="@+id/top_sign_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/top_sign_name"
android:layout_centerHorizontal="true"
android:gravity="center"
android:text="道路名"
android:textColor="#2F2F2F"
android:textSize="14sp" />
</RelativeLayout>

View File

@ -18,31 +18,30 @@
<!-- android:paddingBottom="30dp"--> <!-- android:paddingBottom="30dp"-->
<!-- android:src="@drawable/btn_back_xml" />--> <!-- android:src="@drawable/btn_back_xml" />-->
<androidx.recyclerview.widget.RecyclerView <!-- <androidx.recyclerview.widget.RecyclerView-->
android:id="@+id/phenomenon_middle_recyclerview" <!-- android:id="@+id/phenomenon_middle_recyclerview"-->
android:layout_width="0dp" <!-- android:layout_width="0dp"-->
android:layout_height="35dp" <!-- android:layout_height="35dp"-->
app:layout_constraintLeft_toLeftOf="parent" <!-- app:layout_constraintLeft_toLeftOf="parent"-->
app:layout_constraintRight_toLeftOf="@id/phenomenon_right_recyclerview" <!-- app:layout_constraintRight_toLeftOf="@id/phenomenon_right_recyclerview"-->
app:layout_constraintTop_toTopOf="parent" /> <!-- app:layout_constraintTop_toTopOf="parent" />-->
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/phenomenon_left_recyclerview" android:id="@+id/phenomenon_left_recyclerview"
android:layout_width="0dp" android:layout_width="148dp"
android:layout_height="0dp" android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/phenomenon_right_recyclerview" app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toBottomOf="@id/phenomenon_middle_recyclerview" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/phenomenon_right_recyclerview" android:id="@+id/phenomenon_right_recyclerview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/phenomenon_left_recyclerview" app:layout_constraintLeft_toRightOf="@id/phenomenon_left_recyclerview"
app:layout_constraintRight_toRightOf="parent" /> app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<!-- <LinearLayout--> <!-- <LinearLayout-->
<!-- android:id="@+id/group"--> <!-- android:id="@+id/group"-->

View File

@ -1,20 +1,20 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/item_layout" android:id="@+id/item_layout"
android:background="@color/white"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
android:background="@drawable/selector_adapter_item_select_bg">
<TextView <TextView
android:id="@+id/item_id" android:id="@+id/item_id"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="3dp" android:layout_margin="3dp"
android:padding = "3dp"
android:gravity="center" android:gravity="center"
android:textColor="@color/black" android:padding="3dp"
android:textSize="18sp"> android:drawableLeft="@drawable/selector_task_link_edit_icon"
android:textColor="@color/default_blue_text_color"
android:textSize="14sp"/>
</TextView>
</RelativeLayout> </RelativeLayout>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/item_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white">
<TextView
android:id="@+id/item_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="3dp"
android:gravity="center_vertical"
android:padding="3dp"
android:drawableLeft=""
android:textColor="@color/black"
android:textSize="14sp"/>
</RelativeLayout>

View File

@ -8,5 +8,5 @@
<dimen name="right_fragment_w" comment="右侧fragment宽度">256dp</dimen> <dimen name="right_fragment_w" comment="右侧fragment宽度">256dp</dimen>
<dimen name="main_activity_geometry_w" comment="地图主页坐标框宽度">230dp</dimen> <dimen name="main_activity_geometry_w" comment="地图主页坐标框宽度">230dp</dimen>
<dimen name="main_activity_geometry_h" comment="地图主页坐标框高度">28dp</dimen> <dimen name="main_activity_geometry_h" comment="地图主页坐标框高度">28dp</dimen>
<dimen name="fragment_phenomenon_width" comment="问题现象面板宽度">360dp</dimen>
</resources> </resources>

View File

@ -1,4 +1,4 @@
<resources> <resources>
<dimen name="fab_margin">48dp</dimen> <dimen name="fab_margin">48dp</dimen>
<dimen name="fragment_phenomenon_width" comment="问题现象面板宽度">310dp</dimen> <dimen name="fragment_phenomenon_width" comment="问题现象面板宽度">360dp</dimen>
</resources> </resources>