单击textview中的链接

时间:2012-12-20 09:51:00

标签: android

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

                    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但它不起作用

有什么问题?

5 个答案:

答案 0 :(得分: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"
/>

答案 1 :(得分:3)

在单击视图后,您正尝试将其链接到,从onClick中删除了Linkify。


你走错了路。

试试这个:

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在代码中设置grades.setOnClickListener,那么您的XML中不需要android:onClick=""

答案 2 :(得分:2)

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

 Html.fromHtml(course.getString(TAG_Grade));

答案 3 :(得分:1)

TextView myWebSite = new TextView(this);
myWebSite .setText("http://www.google.com/");
Linkify.addLinks(myWebSite , Linkify.WEB_URLS);

答案 4 :(得分:1)

您已收到足够的关于Linkify的答案,但您的代码中还有一个超级错误抓取:

您误将他的android:onClick属性误认为onClick的方法View.onClickListener

属性android:onClick的工作原理如下:

  

视图所在的View视图上下文中的方法名称   点击。此名称必须与采用的公共方法相对应   恰好是View类型的一个参数。例如,如果您指定   android:onClick =“sayHello”,你必须声明一个公共空白   sayHello(View v)您的上下文方法(通常是您的Activity)。

至于onClick提供的View.onClickListener - 方法 - 接口:

view.setOnClickListener(...)
  

注册此视图时要调用的回调   点击。如果此视图无法点击,则会变为可点击。

这将允许您覆盖该功能:

public abstract void onClick (View v)

在单击视图时调用。