添加展开回调
This commit is contained in:
parent
2501a3dbf6
commit
b426fda4d3
|
|
@ -5,6 +5,7 @@ import android.content.Context
|
|||
import android.graphics.Color
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.LinearLayout
|
||||
import androidx.core.graphics.toColorInt
|
||||
import com.remax.visualnovel.R
|
||||
|
|
@ -14,6 +15,8 @@ import com.remax.visualnovel.entity.response.ChatBubble
|
|||
import com.remax.visualnovel.entity.response.ChatHistory
|
||||
import com.remax.visualnovel.entity.response.ChatMode
|
||||
import com.remax.visualnovel.entity.response.ChatSound
|
||||
import com.remax.visualnovel.ui.chat.ui.expandableSelector.ExpandAiModelSelectView
|
||||
import com.remax.visualnovel.ui.chat.ui.expandableSelector.ExpandSoundSelectView
|
||||
import com.remax.visualnovel.ui.chat.ui.expandableSelector.SelectorItem
|
||||
import java.util.Date
|
||||
|
||||
|
|
@ -43,6 +46,9 @@ class ChatSettingView @JvmOverloads constructor(
|
|||
initHistoryListView()
|
||||
}
|
||||
|
||||
private fun scroll2Position(targetSubView: View) {
|
||||
mBinding.scrollView.smoothScrollTo(0, targetSubView.top)
|
||||
}
|
||||
|
||||
fun initAiModelSelectorView() {
|
||||
val items = listOf(
|
||||
|
|
@ -74,10 +80,24 @@ class ChatSettingView @JvmOverloads constructor(
|
|||
)
|
||||
)
|
||||
|
||||
//aiModelSelector.setOnItemSelectedListener()
|
||||
mBinding.aiModelSelector.setTitleIcon(R.mipmap.setting_ai_model)
|
||||
mBinding.aiModelSelector.setItems(items)
|
||||
mBinding.aiModelSelector.selectItem(0)
|
||||
with(mBinding.aiModelSelector) {
|
||||
setTitleIcon(R.mipmap.setting_ai_model)
|
||||
setItems(items)
|
||||
selectItem(0)
|
||||
setOnEventListener(object : ExpandAiModelSelectView.IEventListener {
|
||||
override fun onItemSelected(
|
||||
position: Int,
|
||||
item: SelectorItem
|
||||
) {
|
||||
// TODO -
|
||||
}
|
||||
|
||||
override fun onExpanded(isExpanded: Boolean) {
|
||||
if (isExpanded)
|
||||
scroll2Position(this@with)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
fun initChatModeSelectorView() {
|
||||
|
|
@ -153,7 +173,22 @@ class ChatSettingView @JvmOverloads constructor(
|
|||
)
|
||||
)
|
||||
|
||||
mBinding.soundActorSelector.setItems(items)
|
||||
with(mBinding.soundActorSelector) {
|
||||
setItems(items)
|
||||
setEventListener(object : ExpandSoundSelectView.IEventListener {
|
||||
override fun onItemSelected(
|
||||
position: Int,
|
||||
item: ChatSound
|
||||
) {
|
||||
|
||||
}
|
||||
|
||||
override fun onExpanded(isExpanded: Boolean) {
|
||||
if (isExpanded)
|
||||
scroll2Position(this@with)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
fun initBubbleSelectView() {
|
||||
|
|
|
|||
|
|
@ -28,7 +28,11 @@ class ExpandAiModelSelectView @JvmOverloads constructor(
|
|||
private var isExpanded = false
|
||||
private var animationDuration = 300
|
||||
private var items: List<SelectorItem> = emptyList()
|
||||
private var itemSelectedListener: OnItemSelectedListener? = null
|
||||
private var mEventListener: IEventListener? = null
|
||||
interface IEventListener {
|
||||
fun onItemSelected(position: Int, item: SelectorItem)
|
||||
fun onExpanded(isExpanded: Boolean)
|
||||
}
|
||||
|
||||
init {
|
||||
initView(context, attrs)
|
||||
|
|
@ -103,7 +107,7 @@ class ExpandAiModelSelectView @JvmOverloads constructor(
|
|||
|
||||
itemView.setOnClickListener {
|
||||
selectItem(position)
|
||||
itemSelectedListener?.onItemSelected(position, item)
|
||||
mEventListener?.onItemSelected(position, item)
|
||||
}
|
||||
|
||||
return itemView
|
||||
|
|
@ -130,13 +134,12 @@ class ExpandAiModelSelectView @JvmOverloads constructor(
|
|||
if (position in items.indices) {
|
||||
mBinding.titleText.text = items[position].name
|
||||
}
|
||||
|
||||
collapse()
|
||||
}
|
||||
|
||||
|
||||
fun toggle() {
|
||||
if (isExpanded) collapse() else expand()
|
||||
mEventListener?.onExpanded(isExpanded)
|
||||
}
|
||||
|
||||
fun expand() {
|
||||
|
|
@ -202,11 +205,9 @@ class ExpandAiModelSelectView @JvmOverloads constructor(
|
|||
return height
|
||||
}
|
||||
|
||||
fun setOnItemSelectedListener(listener: OnItemSelectedListener) {
|
||||
this.itemSelectedListener = listener
|
||||
fun setOnEventListener(listener: IEventListener) {
|
||||
this.mEventListener = listener
|
||||
}
|
||||
|
||||
interface OnItemSelectedListener {
|
||||
fun onItemSelected(position: Int, item: SelectorItem)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -23,10 +23,17 @@ class ExpandSoundSelectView @JvmOverloads constructor(
|
|||
) : LinearLayout(context, attrs, defStyleAttr) {
|
||||
private lateinit var mBinding: LayoutExpandSelectViewBinding
|
||||
private lateinit var mExpandView : ExpandSoundSubView
|
||||
|
||||
private var isExpanded = false
|
||||
private var animationDuration = 300
|
||||
private var itemSelectedListener: OnItemSelectedListener? = null
|
||||
|
||||
private var mEventListener: IEventListener? = null
|
||||
interface IEventListener {
|
||||
fun onItemSelected(position: Int, item: ChatSound)
|
||||
fun onExpanded(isExpanded: Boolean)
|
||||
}
|
||||
fun setEventListener(listener: IEventListener) {
|
||||
mEventListener = listener
|
||||
}
|
||||
|
||||
init {
|
||||
initView(context, attrs)
|
||||
|
|
@ -76,6 +83,7 @@ class ExpandSoundSelectView @JvmOverloads constructor(
|
|||
|
||||
fun toggle() {
|
||||
if (isExpanded) collapse() else expand()
|
||||
mEventListener?.onExpanded(isExpanded)
|
||||
}
|
||||
|
||||
fun expand() {
|
||||
|
|
@ -141,11 +149,6 @@ class ExpandSoundSelectView @JvmOverloads constructor(
|
|||
return height
|
||||
}
|
||||
|
||||
fun setOnItemSelectedListener(listener: OnItemSelectedListener) {
|
||||
this.itemSelectedListener = listener
|
||||
}
|
||||
|
||||
interface OnItemSelectedListener {
|
||||
fun onItemSelected(position: Int, item: SelectorItem)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -45,6 +45,7 @@
|
|||
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:id="@+id/scroll_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/white"
|
||||
|
|
|
|||
Loading…
Reference in New Issue