文字内にURL埋め込み (下線あり)
xmlの</a>
タグを使用。
strings.xml
<string name="text">確認は<a href="https://www.example.com">こちら</a>から</string>
activity_main.xml
<TextView
android:id="@+id/text"
android:layout_width="0dp"
android:layout_height="0dp"
android:text="@string/text"
android:textColorLink="@color/design_default_color_primary"
android:textSize="20sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
MainActivity.kt
binding.text.movementMethod = LinkMovementMethod.getInstance()
![]() |
---|
文字内にURL埋め込み (下線なし)
URLSpanクラスを拡張して使用。
activity_main.xml
<TextView
android:id="@+id/text"
android:layout_width="0dp"
android:layout_height="0dp"
android:textColorLink="@color/design_default_color_primary"
android:textSize="20sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
MainActivity.kt
val clickableSpan = object : URLSpan("https://www.example.com") {
override fun updateDrawState(ds: TextPaint) {
super.updateDrawState(ds)
ds.isUnderlineText = false
}
}
binding.text.text = SpannableString("確認はこちらから").apply {
setSpan(clickableSpan, 3, 6, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
}
binding.text.movementMethod = LinkMovementMethod.getInstance()
![]() |
---|
テキスト内のURL自動検出(下線あり)
android:autoLink
を使用。
activity_main.xml
<TextView
android:id="@+id/text"
android:layout_width="0dp"
android:layout_height="0dp"
android:autoLink="web"
android:text="確認URL: https://www.example.com"
android:textColorLink="@color/design_default_color_primary"
android:textSize="20sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
![]() |
---|
テキスト内のURL自動検出(下線なし)
URLSpanクラスを拡張して使用。
activity_main.xml
<TextView
android:id="@+id/text"
android:layout_width="0dp"
android:layout_height="0dp"
android:text="確認URL: https://www.example.com"
android:textColorLink="@color/design_default_color_primary"
android:textSize="20sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
MainActivity.kt
val spannable = binding.text.text.toSpannable()
val matcher = Pattern.compile("(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]")
.matcher(binding.text.text)
while (matcher.find()) {
val urlSpan = object : URLSpan(matcher.group()) {
override fun updateDrawState(ds: TextPaint) {
super.updateDrawState(ds)
ds.isUnderlineText = false
}
}
spannable.setSpan(urlSpan, matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
}
binding.text.text = spannable
binding.text.movementMethod = LinkMovementMethod.getInstance()
![]() |
---|