Android 要为getSpans、getSpanStart和getSpanEnd导入什么?
我指的是这个。我收到了Android 要为getSpans、getSpanStart和getSpanEnd导入什么?,android,android-studio,kotlin,Android,Android Studio,Kotlin,我指的是这个。我收到了getspan、getSpanStart、getSpanEnd和it的未解决的引用错误。我需要进口什么包装?我已经导入了这些: import android.os.Bundle import android.text.* import android.text.method.LinkMovementMethod import android.text.style.ClickableSpan import android.text.style.ForegroundColorS
getspan
、getSpanStart
、getSpanEnd
和it
的未解决的引用错误。我需要进口什么包装?我已经导入了这些:
import android.os.Bundle
import android.text.*
import android.text.method.LinkMovementMethod
import android.text.style.ClickableSpan
import android.text.style.ForegroundColorSpan
import android.text.style.StyleSpan
import android.text.style.URLSpan
import androidx.core.content.ContextCompat
另一个问题是,一般来说,人们如何知道进口什么?通常,它会抱怨像这样的未解决的引用,我发现很难找到合适的包来导入
========================================================================
完整代码段
import android.graphics.Typeface
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.*
import android.text.Spanned
import android.text.method.LinkMovementMethod
import android.text.style.ClickableSpan
import android.text.style.ForegroundColorSpan
import android.text.style.StyleSpan
import android.text.style.URLSpan
import android.view.View
import android.widget.Toast.LENGTH_SHORT
import androidx.core.content.ContextCompat
import com.google.android.material.snackbar.Snackbar
import kotlinx.android.synthetic.main.activity_login.*
import android.text.SpannableStringBuilder
class HtmlLink(val urlSpan: URLSpan, val spanStart: Int, val spanEnd: Int)
class LoginActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
val termsText = getText(R.string.terms)
val spannableString = SpannableString(termsText)
val annotations = termsText.getSpans(0, termsText.length, Annotation::class.java)
val clickableSpan = object : ClickableSpan() {
override fun onClick(widget: View) {
Snackbar.make(window.decorView.rootView, "URL is clicked", LENGTH_SHORT).show()
}
override fun updateDrawState(ds: TextPaint?) {
ds?.isUnderlineText = false
}
}
annotations?.find { it.value == "terms_link" }?.let {
spannableString.apply {
setSpan(
clickableSpan,
termsText.getSpanStart(it),
termsText.getSpanEnd(it),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
)
setSpan(ForegroundColorSpan(
ContextCompat.getColor(this@LoginActivity, R.color.colorAccent)),
termsText.getSpanStart(it),
termsText. getSpanEnd(it),
0
)
}
}
textView_terms.apply {
text = spannableString
movementMethod = LinkMovementMethod.getInstance()
}
}
}
您可以将该方法用于对象。您正试图将其应用于字符串
termsText
将val annotations=termsText.getspan…
更改为:
val spannableString = SpannableString(termsText)
val annotations = spannableString.getSpans(0, termsText.length, Annotation::class.java)
android.text.span
具有getSpanStart
和getSpanEnd
,您将其导入为android.text.*
,您确定要将文本键入为spandstring
吗?我正在将文本键入为SpannableString
。我用完整的代码更新了帖子。