我目前正在TextView中呈现HTML输入,如下所示:
tv.setText(Html.fromHtml("<a href='test'>test</a>"));
Run Code Online (Sandbox Code Playgroud)
显示的HTML是通过外部资源提供给我的,所以我不能像我一样改变它,但我当然可以对HTML进行一些正则表达式的修改,比如将href值更改为其他内容.
我想要的是能够直接从应用程序中处理链接点击,而不是让链接打开浏览器窗口.这可以实现吗?我猜测可以将href-value的协议设置为类似"myApp://"的东西,然后注册一些可以让我的应用程序处理该协议的东西.如果这确实是最好的方式,我想知道这是怎么做的,但我希望有一个更简单的方法来说,"当在这个文本视图中点击链接时,我想提出一个接收的事件链接的href值作为输入参数"
我正在ClickableSpan使用TextView,我正在尝试获取单击的跨度文本.这是我的代码.
// this is the text we'll be operating on
SpannableString text = new SpannableString("Lorem ipsum dolor sit amet");
// make "dolor" (characters 12 to 17) display a toast message when touched
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View view) {
// This will get "Lorem ipsum dolor sit amet", but I just want "dolor"
String text = ((TextView) view).getText().toString();
Toast.makeText(context, text, Toast.LENGTH_LONG).show();
}
};
text.setSpan(clickableSpan, 12, 17, 0);
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我设置clickablespan了的TextView字符12到17,我想在拿到这些字符onClick …
我对Listview有一些问题.Listview包含由imageview和textview组成的列表项.Textview包含可点击的链接.当我将LinkMovementMethod设置为textviews时,listitems不会收到onclick事件.我仍然找不到任何正确的解决方案=(.任何人都可以解释如何解决它或给出一个使用textite与listitem内部的可点击链接的例子吗?谢谢.这里是适配器中的textview创建:
TextView text = (TextView) ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE))
.inflate(R.layout.post_content_text, null);
SpannableString sString = new SpannableString(d.getText());
//I have my own class UrlSpan that contain fields startPosition, endPosition and urlLink
for (UrlSpan us : ((TextData) d).getUrls())
{
URLSpan urlSpan = new URLSpan(us.getUrl());
sString.setSpan(urlSpan, us.getStart(), us.getEnd(), SpannableString.SPAN_INCLUSIVE_INCLUSIVE);
}
text.setText(sString);
text.setMovementMethod(LinkMovementMethod.getInstance());
view.addView(text);
Run Code Online (Sandbox Code Playgroud)
和列表项是:
<?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:visibility="visible" >
<LinearLayout
style="?PostListRow"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="10dp"
android:orientation="vertical"
android:padding="10dp" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="65dp"
android:orientation="horizontal" >
<ImageView
android:id="@+id/user_image"
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_margin="3dp"
android:clickable="true"
android:src="@drawable/ic_no_photo" />
<LinearLayout
android:layout_width="fill_parent" …Run Code Online (Sandbox Code Playgroud) 我正在努力在一个应用程序中集成Twitter,虽然一切正常,但是如果有一个链接,我就setOnItemClickListener()不会被触发ListView item.当item没有链接(URL)时,它可以正常工作.
单击URL本身可在浏览器中打开网页.
请参阅帖子末尾添加的参考截图.
这是一个ListView使用a 的习惯BaseAdapter.我不确定要放入哪一段代码,但是当指向这里的人可能需要的代码块时,我会立即添加它.
需要忽略项目中的链接(URL)背后的想法是提供一种功能,当用户点击其中时,显示推文详细信息.类似于Twitter Android应用程序的功能.
那么如何setOnItemClickListener()忽略项目中的链接呢?
更新:
好的.所以我不确定它是否与这个问题相关,但是,从SO的一些解决方案的组合导致我进入TweetLanes开源项目,我已经成功地完成了一些工作.但不幸的是,它没有解决我的主要问题.
如何setOnItemClickListener()忽略项目中的链接,以便我可以单击它并在另一个活动中显示详细信息然后,当我点击链接时,不会触发setOnItemClickListener()?我每次尝试都会不断获得部分解决方案.但有时,当我点击a时link,setOnItemClickListener()触发器也是如此.
这就是当前流程的样子:

在前两个屏幕截图中,它可以正常工作.毕竟不是点击链接.
然而,在底部的两个中,当我单击@ibnlive链接时,它会显示用户的配置文件(@ibnlive).这部分源自TweetLanes来源.问题是,还会触发点击侦听器.这是我正在尝试的解决方案之一.在这种情况下,我已经注释掉setOnItemClickListener(),并正在使用OnClickListener()的TextView.这是到目前为止部分成功的一种方法.