有人知道如何在textView
(或任何适当的视图)内显示可点击链接。textView
位于Recycler行内。
我从JSON提要获得字符串响应,在该字符串中,有一个指向某个网页的链接。
当用户点击该链接时,我希望它打开浏览器并转到该页面。
我也试图在Recycler View适配器中处理onBindViewHolder
方法内部的点击。
我尝试在xml中设置android:autoLink="web"
,在java中设置setMovementMethod(LinkMovementMethod.getInstance())
这个{ {1}},但它不起作用并给我这个错误:
textView
如果有更好的方法来处理这些情况,请告诉我。
答案 0 :(得分:1)
使用SpannableString。
例如:我将申请可点击的注册文本(带有下划线的蓝色)意味着,
String text ="Don't have an account? Register";
SpannableString spannableString = new SpannableString(text);
spannableString.setSpan(new ForegroundColorSpan(getResources()
.getColor(R.color.blue)), 23, 31, 0);// i am applying for Register alone. so starting count is 23 and end count is 31.
ClickableSpan clickableSpan = new SpaceAdjust(text) {
@Override
public void onClick(View textView) {
//here perform your stuff
}
};
spannableString.setSpan(clickableSpan, 23, 31,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
如果你需要使用下划线来制作文字。使用这种方法。
import android.text.TextPaint;
import android.text.style.ClickableSpan;
import android.view.View;
/**
* SpaceAdjust.java
*
* This is the class that is used to display underline text
*/
public class SpaceAdjust extends ClickableSpan {
/** The clicked. */
String clicked;
/**
* Instantiates a new space adjust.
*
* @param string
* the string
*/
public SpaceAdjust(String string) {
super();
clicked = string;
}
/*
* (non-Javadoc)
*
* @see android.text.style.ClickableSpan#onClick(android.view.View)
*/
public void onClick(View tv) {
// Un used Code .. Implemented Method
}
/*
* (non-Javadoc)
*
* @see
* android.text.style.ClickableSpan#updateDrawState(android.text.TextPaint)
*/
public void updateDrawState(TextPaint ds) {
ds.setUnderlineText(true); // if you don't want to use underline text, just make this as false.
}
}
答案 1 :(得分:1)
试试这个,
<TextView
android:id="@+id/txt"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:autoLink="web"
android:textColorHighlight="@color/RED"
android:isScrollContainer="true"
android:scrollbars="vertical"
android:textColorLink="@color/RED" />
答案 2 :(得分:0)
尝试
android:linksClickable="true"
以及oncreate of your activity set
edtLinks.setAutoLinkMask(Linkify.WEB_URLS);
其中,edtLinks是你的TextView。
此外,您还可以在textChangelistner
中添加以下内容edtLinks.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
Linkify.addLinks(s, Linkify.WEB_URLS);
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
}
});