标签: linkmovementmethod

Textview的LinkMovementMethod阻止了listitem触摸事件

我对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)

android listview listitem textview linkmovementmethod

8
推荐指数
1
解决办法
730
查看次数

如何在使用LinkMovementMethod时捕获异常(ActivityNotFoundException)

我目前有一个带有一些HTML电话号码和网址的TextView.

我注意到我们可以使用setMovementMethod使这些链接可以点击:

tv.setText("Phone number is: +32485123456 and url is http://www.blabla.com");
tv.setMovementMethod(LinkMovementMethod.getInstance());
Run Code Online (Sandbox Code Playgroud)

这非常有效,但在某些设备上,它会因ActivityNotFoundException而崩溃,这是非常难以理解的.(见下面的代码)

这些问题出现在我的开发者控制台中,我无法重现它们.

我面临的一个大问题是我无法在我的活动中尝试/捕获代码,因为点击是由LinkMovementMethod处理的

关于如何避免此类错误的任何想法?

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=www.vlaamsbrabant.be/zoutleeuw (has extras) }
    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
    at android.app.Activity.startActivityForResult(Activity.java:2817)
    at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:817)
    at android.app.Activity.startActivity(Activity.java:2923)
    at android.text.style.URLSpan.onClick(URLSpan.java:62)
    at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:216)
    at android.widget.TextView.onTouchEvent(TextView.java:6788)
    at android.view.View.dispatchTouchEvent(View.java:3766)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1896)
    at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1159)
    at android.app.Activity.dispatchTouchEvent(Activity.java:2086)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1880)
    at android.view.ViewRoot.handleMessage(ViewRoot.java:1811)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:4627)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:521)
    at …
Run Code Online (Sandbox Code Playgroud)

android textview linkmovementmethod activitynotfoundexception

6
推荐指数
1
解决办法
2960
查看次数

使用ClickableSpan将TextView上的触摸事件重定向到父视图

我有一个带有TextViews的RecyclerView,它可以包含应该是可点击的自定义主题标签.所以我创建了TextView的子类,其中使用Pattern I创建了ClickableSpan.为了使ClickableSpan处于活动状态,我已经添加了

setMovementMethod(LinkMovementMethod.getInstance())
Run Code Online (Sandbox Code Playgroud)

此方法更改TextView的属性:

setFocusable(true);
setClickable(true);
setLongClickable(true);
Run Code Online (Sandbox Code Playgroud)

单击链接工作,但它可以防止在列表项上显示波纹可绘制,并忽略在主题标签之外单击TextView.

所以我很感兴趣如何将TextView(除了hashtag之外的所有内容)重定向到它的父级?

android touch linkmovementmethod

6
推荐指数
2
解决办法
1154
查看次数

如何使其他文本之间的链接可以访问

我有一个CheckedTextBox,其文本由两个SpannableStrings组成,其中一个是一个URLSpan.

我的问题是,如何让用户可以通过每个跨度移动可访问性焦点,最终专注于URLspan本身?setMovementMethodsetLinksClickable似乎并没有为我工作.

SpannableStringBuilder builder = new SpannableStringBuilder();

SpannableString label = new SpannableString(getString(R.string.label));
label.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.text_color_primary)), 0, label.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.append(label);

SpannableString link = new SpannableString(getString(R.string.link);
link.setSpan(new URLSpan(mUrl), 0, link.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.append(link);
builder.append(".");

mCheckedTextBox.setText(builder);

//The following two methods do not work for what I'm trying to accomplish:
mCheckedTextBox.setMovementMethod(LinkMovementMethod.getInstance());
mCheckedTextBox.setLinksClickable(true);
Run Code Online (Sandbox Code Playgroud)

我已经检查了Android辅助功能帮助文档,看起来只要用户听到一个铃声并且可以在本地上下文菜单中看到链接就足够了.但是,我想看看我是否可以加倍努力使用户能够滚动并聚焦到文本的链接部分. https://support.google.com/accessibility/android/answer/6378148?hl=en

任何帮助,将不胜感激.

android accessibility linkmovementmethod urlspan

6
推荐指数
1
解决办法
1306
查看次数

大胆的ClickableSpan触摸

我有一个TextView,其中每个单词都是ClickableSpan(实际上是ClickableSpan的自定义子类).触摸单词时,应以粗体字体显示.如果我在TextView上设置textIsSelectable(false),它就可以正常工作.这个词立即加粗.但是如果文本是可选择的,那么它就不起作用.但是 - 如果我触摸一个单词,然后关闭屏幕并重新打开,当屏幕显示重新出现时,该单词将以粗体显示.我已经尝试了所有我能想到的强制重绘(使TextView无效,强制调用Activity的onRestart(),在TextView上调用refreshDrawableState()等).我错过了什么?

这是我的ClickableSpan的子类:

public class WordSpan extends ClickableSpan
{
    int id;
    private boolean marking = false;
    TextPaint tp;
    Typeface font;
    int color = Color.BLACK;

    public WordSpan(int id, Typeface font, boolean marked) {
        this.id = id;
        marking = marked;
        this.font = font;
    }

    @Override
    public void updateDrawState(TextPaint ds) {
        ds.setColor(color);
        ds.setUnderlineText(false);

        if (marking)
            ds.setTypeface(Typeface.create(font,Typeface.BOLD));

        tp = ds;
    }

    @Override
    public void onClick(View v) {
        // Empty here -- overriden in activity
    }

    public void setMarking(boolean m) {
        marking …
Run Code Online (Sandbox Code Playgroud)

android linkmovementmethod clickablespan

6
推荐指数
1
解决办法
382
查看次数

Android TextView 使用 setMovementMethod 泄漏

我有一个ListView和它adaptergetView方法,我返回一个RelativeLayoutMyButton它里面。

MyButton有一个textView,我在里面有可点击的词 ( ClickableSpan)。

为了完成这项工作,我从以下行开始: textView.setMovementMethod(LinkMovementMethod.getInstance());

一切正常,但 MAT 显示MyButton泄漏是因为textView. 当我注释掉上面的行时,没有任何泄漏。

我应当设置movementMethodnull?但即使是这样,我也不知道按钮的破坏时刻将其设置null为在许多其他视图中。

我究竟做错了什么?如何防止这种泄漏?

在此处输入图片说明

更新

通过将 text 设置为里面的空字符串解决了泄漏问题onDetachedFromWindow,但我仍在尝试查找与此行为相关的文档。为什么要设置textview""

android listview memory-leaks textview linkmovementmethod

5
推荐指数
2
解决办法
2224
查看次数

EditTexts with links both clickable and editable

I am working with EditText which take WebUrl in input.For that I am using LinkMovementMethod Make links in the EditText clickable.

Problem is that :

If the last part of the text is a link, clicking anywhere causes the link to be opened.

I want when I am clicking on click here to edit area edittext, It will be editable?

在此处输入图片说明

android android-edittext linkmovementmethod

5
推荐指数
1
解决办法
381
查看次数

使用“是/否”对话框拦截链接 LinkMovementMethod

LinkMovementMethod我建立了一个标准,TextView当用户触摸链接时推送某种网络活动。但是,我想建立一个“您想查看链接吗”对话框,而不是将用户直接带到网页。我尝试过重写触摸方法,但这一切都变得有点复杂。一点帮助?

android linkmovementmethod

3
推荐指数
1
解决办法
2105
查看次数