@@ -6,13 +6,15 @@ import android.graphics.Rect
66import android.util.AttributeSet
77import android.util.Log
88import android.view.View
9+ import android.view.View.OnLongClickListener
910import android.view.ViewGroup
1011import kotlin.math.max
1112
1213private const val TAG = " TagLayout"
1314
1415/* *
1516 * 标签布局
17+ * @author yhw
1618 */
1719class TagLayout : ViewGroup {
1820 private val mViewRectList = mutableListOf<Rect >()
@@ -82,8 +84,6 @@ class TagLayout : ViewGroup {
8284 }
8385
8486 if (! mChildViewList.contains(childView)) {
85- childView.isClickable = true
86- childView.isFocusable = true
8787 if (choiceMode == ChoiceMode .SingleChoice .choiceMode) {
8888 if (i in 0 until childCount && i == defChoicePosition)
8989 childView.isSelected = true
@@ -101,28 +101,34 @@ class TagLayout : ViewGroup {
101101 )
102102 mViewRectList.add(rect)
103103
104- childView.setOnClickListener {
105- changedCheckedItemView(i)
106- if (onItemClickListener != null ) {
107- onItemClickListener?.onItemClick(i, it)
108- }
109- if (choiceMode == ChoiceMode .SingleChoice .choiceMode) {
110- this .defChoicePosition = i
111- if (onSingleCheckedChangeListener != null ) {
112- onSingleCheckedChangeListener?.onCheckedChanged(defChoicePosition)
104+ if (onItemClickListener != null || onSingleCheckedChangeListener != null || onMultipleCheckedChangeListener != null ) {
105+ childView.isClickable = true
106+ childView.isFocusable = true
107+ childView.setOnClickListener {
108+ changedCheckedItemView(i)
109+ if (onItemClickListener != null ) {
110+ onItemClickListener?.onItemClick(i, it)
113111 }
114- } else if (choiceMode == ChoiceMode .MultipleChoice .choiceMode) {
115- if (onMultipleCheckedChangeListener != null ) {
116- onMultipleCheckedChangeListener?.onCheckedChanged(getCheckedList())
112+ if (choiceMode == ChoiceMode .SingleChoice .choiceMode) {
113+ this .defChoicePosition = i
114+ if (onSingleCheckedChangeListener != null ) {
115+ onSingleCheckedChangeListener?.onCheckedChanged(defChoicePosition)
116+ }
117+ } else if (choiceMode == ChoiceMode .MultipleChoice .choiceMode) {
118+ if (onMultipleCheckedChangeListener != null ) {
119+ onMultipleCheckedChangeListener?.onCheckedChanged(getCheckedList())
120+ }
117121 }
118122 }
119123 }
120124
121- childView.setOnLongClickListener {
122- if (onItemLongClickListener != null ) {
123- onItemLongClickListener?.onItemLongClick(i, it)
124- }
125- true
125+ if (onItemLongClickListener != null ) {
126+ childView.isClickable = true
127+ childView.isFocusable = true
128+ childView.setOnLongClickListener(OnLongClickListener { v ->
129+ onItemLongClickListener?.onItemLongClick(i, v)
130+ true
131+ })
126132 }
127133 }
128134
0 commit comments