Java Linkify是否适用于Android中的TextView?
我的方法调用了EditText,我尝试对TextView使用相同的代码,但不起作用。文本不会像EditText中那样变成超链接,有人知道为什么吗Java Linkify是否适用于Android中的TextView?,java,android,linkify,Java,Android,Linkify,我的方法调用了EditText,我尝试对TextView使用相同的代码,但不起作用。文本不会像EditText中那样变成超链接,有人知道为什么吗 public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(sa
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.link_view);
// make sure that setText call comes BEFORE Linkify.addLinks call
tv.setText(tv.getText().toString());
Linkify.addLinks(tv, Linkify.WEB_URLS);
}}
布局如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TableRow>
<TextView
android:id="@+id/link_lbl"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingRight="10dip"
android:text="Link" />
<TextView
android:id="@+id/link_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="google.com" />
</TableRow>
</TableLayout>
这将在EditText中正常工作,我只需要帮助在TextView中执行相同的操作,请尝试下面的代码。这对我来说很好
TextView tv = ....
tv.setMovementMethod(LinkMovementMethod.getInstance());
String content = tv.getText().toString();
List<String> links = new ArrayList<String>();
Pattern p = Patterns.WEB_URL;
Matcher m = p.matcher(content);
while (m.find()) {
String urlStr = m.group();
links.add(urlStr);
}
SpannableString f = new SpannableString(content);
for (int i = 0; i < links.size(); i++) {
final String url = links.get(i);
f.setSpan(new InternalURLSpan(new OnClickListener() {
public void onClick(View v) {
Context ctx = v.getContext();
String urlToOpen = url;
if (!urlToOpen.startsWith("http://") || !urlToOpen.startsWith("https://"))
urlToOpen = "http://" + urlToOpen;
openURLInBrowser(urlToOpen, ctx);
}
}), content.indexOf(url), content.indexOf(url) + url.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
tv.setText(f);
TextView电视=。。。。
setMovementMethod(LinkMovementMethod.getInstance());
字符串内容=tv.getText().toString();
列表链接=新建ArrayList();
Pattern p=Patterns.WEB\u URL;
匹配器m=p.Matcher(内容);
while(m.find()){
字符串urlStr=m.group();
links.add(urlStr);
}
SpannableString f=新的SpannableString(内容);
对于(int i=0;i
具有可点击范围,并使用可点击范围设置文本。您可以为clickabke范围定制颜色。单击textview中的文本时,将显示一个祝酒词
String title="hello";
SpannableString ss1= new SpannableString(title);
ss1.setSpan(new MyClickableSpan(title), 0, ss1.length(), 0);
tv = (TextView) findViewById(R.id.textview);
tv.setText(ss1);
tv.setMovementMethod(LinkMovementMethod.getInstance());
我的可点击范围
class MyClickableSpan extends ClickableSpan{
String clicked;
public MyClickableSpan(String string)
{
super();
clicked =string;
}
public void onClick(View tv)
{
// onclick of text in textview do something
Toast.makeText(MainActivity.this,clicked ,Toast.LENGTH_SHORT).show();
//display a toast
}
public void updateDrawState(TextPaint ds)
{
ds.setColor(Color.BLUE);//set text color
ds.setUnderlineText(true); // set to false to remove underline
}
}
结果快照
编辑:
打开一个浏览器,url位于textview中的单击文本上。您还可以将url传递给活动。检索url并在webview中加载url
<uses-permission android:name="android.permission.INTERNET"/>
public void onClick(View tv) {
//do something
Toast.makeText(MainActivity.this,clicked ,
Toast.LENGTH_SHORT).show();
String url = "http://www.example.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
OR
second.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<WebView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/wv"></WebView>
</LinearLayout>
Vmerror我在实现你的代码时遇到问题,你能帮我吗?我是Android的初学者如果我放了一个网站,它会加载吗?@lucas你需要在onClick()中处理这个问题。拥有一个webview并在onClick()中加载url,或者启动一个新的活动,用url加载webview
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<WebView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/wv"></WebView>
</LinearLayout>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
WebView wv= (WebView) findViewById(R.id.wv);
Bundle extras= getIntent().getExtras();
if(extras!=null)
{
wv.loadUrl(extras.getString("key"));
}
}
}