0

我有文本视图,我想将文本设置为指向网站的链接,但问题是我无法点击:

                    Grades = (TextView) findViewById(R.id.textView9);
                    Grades.setText(Html.fromHtml(course.getString(TAG_Grade)));

                Grades.setOnClickListener(new View.OnClickListener() {

                    public void onClick(View v) {

                        WebView webView; webView.setWebViewClient(new WebViewClient()
                        {

                        }webView.loadUrl(course.getString(TAG_Grade)); });

和xml:

<TextView 
    android:id="@+id/textView9"
    android:layout_marginLeft="110dp"
    android:layout_marginTop="365dp"
    android:textColor="#000"
    android:textSize="14sp"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:autoLink="web"
    android:onClick="onClick"
/>

知道course.getString(TAG_Grade)会从 db 获取 url 但它不起作用

问题是什么?

4

5 回答 5

3

用过这个android:clickable="true"

<TextView 
    android:id="@+id/textView9"
    android:layout_marginLeft="110dp"
    android:layout_marginTop="365dp"
    android:textColor="#000"
    android:textSize="14sp"
    android:clickable="true"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
     android:autoLink="web"
     android:onClick="onClick"
/>
于 2012-12-20T09:54:08.707 回答
3

单击视图后,您尝试对其进行链接,从 onClick 中删除了链接。


你走错路了。

试试这个:

String userCanSeeThis = "Your Website Name";
String url = course.getString(TAG_Grade);

TextView grades = (TextView) findViewById(R.id.textView9);
grades.setText(userCanSeeThis);

addLinks(Grades, userCanSeeThis, url);

使用这个辅助方法:

    /**
     * @param textView
     *            textView who's text you want to change
     * @param linkThis
     *            a regex of what text to turn into a link
     * @param toThis
     *            the url you want to send them to
     */
    public static void addLinks(TextView textView, String linkThis, String toThis) {
        Pattern pattern = Pattern.compile(linkThis);
        String scheme = toThis;
        android.text.util.Linkify.addLinks(textView, pattern, scheme, new MatchFilter() {
            @Override
            public boolean acceptMatch(CharSequence s, int start, int end) {
                return true;
            }
        }, new TransformFilter() {

            @Override
            public String transformUrl(Matcher match, String url) {
                return "";
            }
        });
    }

此外,如果您onClickListener在代码中设置了,那么您的 XML 中grades.setOnClickListener就不需要android:onClick=""

于 2012-12-20T09:56:03.663 回答
2

而不是使用Linkify我更喜欢下面的行:

 Html.fromHtml(course.getString(TAG_Grade));
于 2012-12-20T09:54:03.740 回答
1
TextView myWebSite = new TextView(this);
myWebSite .setText("http://www.google.com/");
Linkify.addLinks(myWebSite , Linkify.WEB_URLS);
于 2012-12-20T10:02:18.797 回答
1

您已经收到了足够多的有关 Linkify 的答案,但您的代码中还有一个细微的错误爬网:

您将属性 his 误认为是 anandroid:onClick的方法:onClickView.onClickListener

该属性的android:onClick工作方式如下:

单击视图时要在此视图的上下文中调用的方法的名称。此名称必须对应于只采用一个 View 类型参数的公共方法。例如,如果您指定 android:onClick="sayHello",则必须声明您的上下文(通常是您的 Activity)的 public void sayHello(View v) 方法。

至于onClick-interface提供的-method View.onClickListener

view.setOnClickListener(...)

注册在单击此视图时要调用的回调。如果此视图不可点击,则它变为可点击。

这将允许您覆盖该功能:

public abstract void onClick (View v)

单击视图时调用它。

于 2012-12-20T10:04:55.970 回答