gpt4 book ai didi

java - Linkify 是否适用于 Android 中的 TextView?

转载 作者:太空宇宙 更新时间:2023-11-03 13:28:43 26 4
gpt4 key购买 nike

我的代码适用于调用 EditText 的方法,我尝试对 TextView 使用相同的代码,但它不起作用。文本不会像在 EditText 中那样变成超链接,有人知道为什么吗?

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 中做同样的事情

最佳答案

具有可点击范围并使用可点击范围设置文本。您可以为 clickabke 跨度设置自定义颜色。当您单击 TextView 中的文本时,它会显示 toast 。

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());

MyClickableSpan

   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
}
}

生成快照

enter image description here

编辑:

在 textview 中单击文本,打开带有 url 的浏览器。您还可以将 url 传递给 Activity 。检索 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

在 onClick() 中

   Intent t= new Intent(MainActivity.this,SecondActivity.class);
t.putExtra("key","http://www.google.com");
startActivity(t);

第二个.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>

然后在SecondActivty中

公共(public)类 SecondActivity 扩展 Activity{

@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"));
}
}
}

关于java - Linkify 是否适用于 Android 中的 TextView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16062705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com