第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

帶有可點(diǎn)擊鏈接的Android TextView:如何捕獲點(diǎn)擊?

帶有可點(diǎn)擊鏈接的Android TextView:如何捕獲點(diǎn)擊?

溫溫醬 2019-10-15 15:53:41
我有一個(gè)呈現(xiàn)基本HTML的TextView,其中包含2個(gè)以上的鏈接。我需要捕獲對(duì)鏈接的點(diǎn)擊并打開鏈接-在我自己的內(nèi)部WebView中(而不是在默認(rèn)瀏覽器中)。處理鏈接呈現(xiàn)的最常見方法似乎是這樣的:String str_links = "<a href='http://google.com'>Google</a><br /><a href='http://facebook.com'>Facebook</a>";text_view.setLinksClickable(true);text_view.setMovementMethod(LinkMovementMethod.getInstance());text_view.setText( Html.fromHtml( str_links ) );但是,這將導(dǎo)致鏈接在默認(rèn)的內(nèi)部Web瀏覽器中打開(顯示“使用...完成操作”對(duì)話框)。我嘗試實(shí)現(xiàn)一個(gè)onClickListener,當(dāng)單擊鏈接時(shí)會(huì)正確觸發(fā)它,但我不知道如何確定單擊了哪個(gè)鏈接...text_view.setOnClickListener(new OnClickListener(){    public void onClick(View v) {        // what now...?    }});另外,我嘗試創(chuàng)建一個(gè)自定義LinkMovementMethod類并實(shí)現(xiàn)onTouchEvent ...public boolean onTouchEvent(TextView widget, Spannable text, MotionEvent event) {    String url = text.toString();    // this doesn't work because the text is not necessarily a URL, or even a single link...     // eg, I don't know how to extract the clicked link from the greater paragraph of text    return false;}有想法嗎?解決方案示例我想出了一種解決方案,可以解析HTML字符串中的鏈接并使它們可單擊,然后讓您響應(yīng)URL。
查看完整描述

3 回答

?
喵喵時(shí)光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊

根據(jù)另一個(gè)答案,這是一個(gè)函數(shù)setTextViewHTML(),該函數(shù)將從HTML字符串中解析出鏈接,并使它們可單擊,然后讓您響應(yīng)URL。


protected void makeLinkClickable(SpannableStringBuilder strBuilder, final URLSpan span)

{

    int start = strBuilder.getSpanStart(span);

    int end = strBuilder.getSpanEnd(span);

    int flags = strBuilder.getSpanFlags(span);

    ClickableSpan clickable = new ClickableSpan() {

        public void onClick(View view) {

            // Do something with span.getURL() to handle the link click...

        }

    };

    strBuilder.setSpan(clickable, start, end, flags);

    strBuilder.removeSpan(span);

}


protected void setTextViewHTML(TextView text, String html)

{

    CharSequence sequence = Html.fromHtml(html);

    SpannableStringBuilder strBuilder = new SpannableStringBuilder(sequence);

    URLSpan[] urls = strBuilder.getSpans(0, sequence.length(), URLSpan.class);   

    for(URLSpan span : urls) {

        makeLinkClickable(strBuilder, span);

    }

    text.setText(strBuilder);

    text.setMovementMethod(LinkMovementMethod.getInstance());       

}


查看完整回答
反對(duì) 回復(fù) 2019-10-15
?
有只小跳蛙

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊

您已完成以下操作:


text_view.setMovementMethod(LinkMovementMethod.getInstance());

text_view.setText( Html.fromHtml( str_links ) );

您是否嘗試了如下所示的相反順序?


text_view.setText( Html.fromHtml( str_links ) );

text_view.setMovementMethod(LinkMovementMethod.getInstance());

沒有:


text_view.setLinksClickable(true);


查看完整回答
反對(duì) 回復(fù) 2019-10-15
  • 3 回答
  • 0 關(guān)注
  • 869 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)