Skip to content

Commit 574a1fc

Browse files
committed
current state exposed
1 parent 43baba8 commit 574a1fc

3 files changed

Lines changed: 31 additions & 7 deletions

File tree

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
package="com.devzone.ctv_sample">
3+
xmlns:tools="http://schemas.android.com/tools" package="com.devzone.ctv_sample">
44

55
<application
66
android:allowBackup="true"
77
android:icon="@mipmap/ic_launcher"
88
android:label="@string/app_name"
99
android:roundIcon="@mipmap/ic_launcher_round"
1010
android:supportsRtl="true"
11-
android:theme="@style/AppTheme">
11+
android:theme="@style/AppTheme" tools:ignore="AllowBackup,GoogleAppIndexingWarning">
1212
<activity android:name="com.devzone.ctv_sample.MainActivity">
1313
<intent-filter>
1414
<action android:name="android.intent.action.MAIN"/>

checkabletextview/src/main/java/com/devzone/checkabletextview/CheckableTextView.kt

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,18 @@ class CheckableTextView : RelativeLayout {
7979
}
8080

8181
animateView(checkedIV, isChecked)
82-
rootRL.setOnClickListener {
82+
rootRL.setOnClickListener(clickListener())
83+
}
84+
85+
private fun clickListener(): (v: View) -> Unit {
86+
return {
8387
checkedTextTV.text = checkedTextTV.text
8488
checkedTextTV.isSelected = true
8589
isChecked = !isChecked
8690
animateView(checkedIV, isChecked)
8791
notifyListener(isChecked)
8892
}
8993
}
90-
9194
private fun applyTextStyle(textStyle: Int, context: Context) {
9295
if (isValidRes(textStyle)) {
9396
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
@@ -125,19 +128,40 @@ class CheckableTextView : RelativeLayout {
125128
listener?.onCheckChange(this, isChecked)
126129
}
127130

131+
132+
private fun getRippleDrawable(): Int {
133+
val outValue = TypedValue()
134+
context.theme.resolveAttribute(android.R.attr.selectableItemBackground, outValue, true)
135+
return outValue.resourceId
136+
}
137+
138+
139+
/*-------------------------------------------------public functions------------------------------------------------------------------------------------------*/
140+
141+
142+
fun setClickEnabled(isClickable: Boolean) {
143+
// 0.5 second delay added to ongoing ripple animation to complete (if any)
144+
rootRL.postDelayed(
145+
{ rootRL.setBackgroundResource(if (isClickable) getRippleDrawable() else android.R.color.transparent) },
146+
500
147+
)
148+
rootRL.setOnClickListener(if (isClickable) clickListener() else null)
149+
}
150+
128151
fun setOnCheckChangeListener(listener: CheckedListener) {
129152
this.listener = listener
130153
}
131154

132-
fun setChecked(isChecked: Boolean, shouldNotifyListeners: Boolean) {
155+
fun setChecked(isChecked: Boolean, shouldNotifyListeners: Boolean=false) {
133156
this.isChecked = isChecked
134157
animateView(checkedIV, isChecked)
135158
if (shouldNotifyListeners)
136159
notifyListener(isChecked)
137160
}
138161

139-
fun setChecked(isChecked: Boolean) {
140-
setChecked(isChecked, false)
162+
163+
fun isChecked(): Boolean {
164+
return this.isChecked
141165
}
142166

143167
interface CheckedListener {

logo.png

9.6 KB
Loading

0 commit comments

Comments
 (0)