Я создаю приложение для Android с kotlin
. Я достиг точки, что у меня есть лицензионное соглашение с конечным пользователем checkbox
, и мне нужно сделать часть текста флажка интерактивной, чтобы отобразить условия.
XML-файл
<CheckBox
android:id="@+id/accept_terms_and_conditions"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:text="I have read and accept the Terms & Conditions"
android:textColor="#000000"
android:textSize="16sp"/>
Я хочу, чтобы часть Terms & Conditions
была кликабельной. Я уже попробовал код ниже. Первоначально это был java
код, найденный здесь , и он автоматически преобразовывался в kotlin
с помощью Android Studio
, но мне не очень повезло с ним, так как приложение зависало при запуске SignUpActivity
.
файл Kotlin
class SignUpActivity : AppCompatActivity() {
private var mAuthTask: UserSignUpTask? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sign_up)
val checkBox = findViewById<TextView>(R.id.accept_terms_and_conditions)
val text = getText(R.string.terms_and_conditions)
val ss = SpannableString(text)
val clickableSpan1 = object : ClickableSpan() {
override fun onClick(widget: View) {
Toast.makeText(this@SignUpActivity, "One", Toast.LENGTH_SHORT).show()
}
override fun updateDrawState(ds: TextPaint) {
super.updateDrawState(ds)
ds.color = Color.BLUE
ds.isUnderlineText = false
}
}
ss.setSpan(clickableSpan1, 28, 46, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
checkBox.text = ss
checkBox.movementMethod = LinkMovementMethod.getInstance()
}
}
Так есть ли способ сделать это непосредственно из файла XML
? И если нет, как я могу сделать это в Kotlin
?
Примечание: API, который я разрабатываю, - 21.