TextView의 링크를 클릭 가능하게 만드는 방법은 무엇입니까?


1003

다음 TextView가 정의되어 있습니다.

<TextView android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:text="@string/txtCredits"
    android:autoLink="web" android:id="@+id/infoTxtCredits"
    android:layout_centerInParent="true"
    android:linksClickable="true"></TextView>

where @string/txtCredits는 포함하는 문자열 리소스입니다 <a href="some site">Link text</a>.

Android는 TextView에서 링크를 강조 표시하지만 클릭에 응답하지 않습니다. 누군가 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까? 이처럼 간단한 활동을 위해 액티비티에서 TextView에 onClickListener를 설정해야합니까?

문자열 리소스를 정의하는 방식과 관련이있는 것 같습니다. 작동하지 않습니다.

<string name="txtCredits"><a href="http://www.google.com">Google</a></string>

그러나 이것은 :

<string name="txtCredits">www.google.com</string>

전체 URL을 표시하는 것보다 텍스트 링크를 표시하는 것이 훨씬 쉽기 때문에 큰 문제입니다.


67
android : autoLink = "web"이것은 xml에 추가해야하는 주요 라인이며 매력처럼 작동합니다. @Richard 감사합니다
— jeet.chanchawat

1
<string name = "txtCredits"> <a href=" google.com"> www.google.com </a> </ string > 위의 sttring을 사용하면 작동합니다. href 및 앵커 태그에 포함 된 문자열은 동일해야하며 .com 또는. *가 있어야 작동하는지 확인할 수 있습니다.
— Shaik Khader

<string name = "txtCredits"> 여기에있는 일부 텍스트 <a href=" google.com"> Google </a> </ string > 위의 스 니펫 클릭 여기에있는 일부 텍스트는 제 경우에는 작동하지 않습니다. 어떻게해야합니까?
— Ajay Takur


android:focusable="true"내 문제를 해결
— Khang .NT

답변:


1228

API 데모에 묻혀서 내 문제에 대한 해결책을 찾았습니다.

Link.java :

    // text2 has links specified by putting <a> tags in the string
    // resource.  By default these links will appear but not
    // respond to user input.  To make them active, you need to
    // call setMovementMethod() on the TextView object.

    TextView t2 = (TextView) findViewById(R.id.text2);
    t2.setMovementMethod(LinkMovementMethod.getInstance());

데모에 있던 것과 일치하도록 TextView에서 대부분의 속성을 제거했습니다.

<TextView
    android:id="@+id/text2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/txtCredits"/>

그것은 해결했다. 폭로하고 고치기가 꽤 어렵습니다.

중요 : autoLink="web"전화를 거는 경우 반드시 제거하십시오 setMovementMethod().


19
어쩌면 그것은 나뿐이지만 왜 EditText로 이것을 할 것입니까?
— Justin

1
목표를 달성하기 위해 setMovementMethod 만 필요하다는 것이 밝혀졌습니다.
— superarts.org

3
기념식으로, "setMovementMethod (LinkMovementMethod.getInstance ())"를 사용할 때 충돌하는 OS 4.3의 일부 Samsung Galaxy S3를 보았으므로이를 고려하기 만하면 추가하기 전에 유효성 검사를 만들어야했습니다.
— Jorge Aguilar

40
여기도 마찬가지입니다. setMovementMethod ()가 호출되면 XML 파일에서 autolink = "web"을 제거해야합니다. 그렇지 않으면 링크가 작동하지 않습니다. 댓글 주셔서 감사합니다
— voghDev

6
예를 들어 다음과 같이 XML에서 "autoLink"속성을 사용하십시오. android : autoLink = "web"
— Kalpesh

533

나는 단지 사용 android:autoLink="web"하고 있으며 잘 작동합니다. 링크를 클릭하면 브라우저가 열리고 올바른 페이지가 표시됩니다.

내가 추측 할 수있는 한 가지는 다른보기가 링크 위에 있다는 것입니다. 투명한 것은 전체 부모를 채우지 만 링크 위에 아무것도 표시하지 않습니다. 이 경우 클릭은 링크 대신이보기로 이동합니다.


3
위의 추가 정보를 추가했습니다. 문자열을 <string name = "txtCredits"> <a href=" google.com"> Google </a> </ string > 으로 정의하는 방법 일 수 있습니까? 이것이 허용 된 것처럼 보이지만 나를 위해 작동하지 않습니다.
— Richard

6
linkify auto를 사용하면 a href 부분이 필요하지 않습니다. OS는 문자열을 URL에 대해 구문 분석하고 모든 URL을 클릭 가능한 링크로 변환합니다. 그러나 google이라는 단어가 google.com에 연결되지는 않습니다. www.google.com을 링크로 표시합니다.
— Janusz

자동 링크를 사용하면 부모님없이 평범한 텍스트보기가 완벽하게 작동합니다.
— euther

2
android : autoLink는 전화 번호, 주소 및 전자 메일 주소 (또는 위의 모든 항목)를 연결하는 데에도 효과적입니다.
— CloudyMusic

54
당신이 URL에서 표시 텍스트의 다른와 앵커 태그를 사용하는 wan't 경우이 대답은 일을하지 않기 때문에 아니 그것은 아니다
— cprcrack

375

이것으로 시간을 보낸 후에 나는 다음을 발견했습니다.

  • android:autoLink="web"HTML에 전체 링크가 있으면 작동합니다. 다음은 파란색으로 강조 표시되고 클릭 가능합니다.
  • 일부 텍스트 <a href="http://www.google.com">http://www.google.com</a>
  • 일부 텍스트 http://www.google.com
  • view.setMovementMethod(LinkMovementMethod.getInstance()); 다음과 함께 작동합니다 (강조 표시 및 클릭 가능).
  • 일부 텍스트 <a href="http://www.google.com">http://www.google.com</a>
  • 일부 텍스트 http://www.google.com
  • 일부 텍스트 <a href="http://www.google.com">Go to Google</a>

세 번째 옵션에는 하이퍼 링크가 있지만 링크 (태그 사이의 부분) 자체에 대한 설명은 링크가 아닙니다. 그러한 링크 android:autoLink="web"에서는 작동 하지 않습니다 .

  • android:autoLink="web" XML로 설정하면 무시됩니다 view.setMovementMethod(LinkMovementMethod.getInstance()); (즉, 세 번째 종류의 링크는 강조 표시되지만 클릭 할 수는 없음).

이야기의 교훈은 view.setMovementMethod(LinkMovementMethod.getInstance());코드에서 사용 하는 것이며 모든 링크를 클릭 할 수있게 android:autoLink="web"하려면 XML 레이아웃 이 없어야합니다.


setMovementMethod는 google.com 과 같은 두 번째 옵션에서 작동하지 않습니다 . 어떤 업데이트?
— Darpan

16
<a href="http://www.google.com">Go to Google</a>autoLink에서 작동하지 않음 을 지적 해 주셔서 감사합니다 . SO에 대한 많은 답변에 대해서는 이것이 언급 한 유일한 것입니다. 감사합니다!
— cwhsu

이것은 작동합니다. API 29에서 테스트되었습니다.
— Wrichik Basu

96

위의 솔루션은 저에게 효과적이지 않지만 다음은 효과가 있습니다 (그리고 약간 더 깨끗해 보입니다).
먼저 문자열 리소스에서 HTML 엔터티 인코딩을 사용하여 태그 열기 셰브론을 정의하십시오.

&lt;a href="http://www.google.com">Google&lt;/a>

아닙니다 :

<a href="http://www.google.com">Google</a>

일반적으로 문자열의 모든 갈매기 형 코드를 그런 식으로 인코딩하십시오. BTW, 링크는http://

그런 다음 ( 여기 에서 제안한대로 ) TextView에서이 옵션을 설정 하십시오 .

 android:linksClickable="true"

마지막으로 코드에서 다음을 수행하십시오.

((TextView) findViewById(R.id.your_text_view)).setMovementMethod(LinkMovementMethod.getInstance());
((TextView) findViewById(R.id.your_text_view)).setText(Html.fromHtml(getResources().getString(R.string.string_with_links)));

그것은 정규식이나 다른 수동 해킹이 필요하지 않습니다.


7
이 코드가 실행될 때마다 HTML 파서가 생성됩니다. 이 옵션을 사용하여 목록 항목 내에 또는 앱의 다른 성능이 중요한 장소에 링크를 만드는 경우주의하십시오. 목록 항목을 작성하는 동안 getView 메소드의 실행 시간이 50 % 줄어 듭니다.
— Janusz

1
또한 URL의 공백은 다음으로 대체해야합니다.%20
— Nicolas Tyler

<![CDATA[ ... ]]>태그로 문자열을 줄임으로써 엔티티 인코딩 문제를 피할 수 있습니다 .
— Paul Lammertsma

1
저에게 효과적입니다. 감사합니다. <![CDATA[...]]>태그로 작동하지 않습니다 .
— ricky.tribbia

이것이 답이되어야합니다! 내 네이티브 응용 프로그램과 함께 완벽하게 일했다
— 아제이 쿨 카르 니

68

나는 이것을 단순히 사용했다

Linkify.addLinks(TextView, Linkify.ALL);

여기에 링크를 클릭 할 수있게합니다.


4
이 답변이 최고입니다. 모든 Android 버전에서 작동하며 TextView에 텍스트가 설정되면 해당 메소드를 추가하면됩니다. 보너스 : 클릭 가능한 맞춤형 링크를 추가 할 수 있습니다
— Kerwan

3
정말 간단하고 최상의 답변입니다. 그것은 이메일 / 웹에 동시에 작동합니다 .... 고마워!
— Imran Ahmed

1
최신 고급 기능 중 일부가 필요한 경우 LinkifyCompat을 사용하십시오
— Vaiden

좋습니다, <a href...클릭 할 수없는 URL을 만듭니다
— Pavel

또한 <b> ... </ b> 등의 모든 "html"태그를 적절하게 작동시킵니다.
— Array

67

HTML과 같은 링크를 추가하려면 다음을 수행하십시오.

  • 리소스 HTML과 유사한 문자열을 추가하십시오.

     <string name="link"><a href="https://www.google.pl/">Google</a></string>
  • 링크 별 구성이 전혀없는 레이아웃에보기를 추가하십시오.

     <TextView
        android:id="@+id/link"
        android:text="@string/link" />`
  • TextView에 프로그래밍 방식으로 적절한 MovementMethod를 추가하십시오.

     mLink = (TextView) findViewById(R.id.link);
     if (mLink != null) {
       mLink.setMovementMethod(LinkMovementMethod.getInstance());
     }

그게 다야! 그리고 그렇습니다. "autoLink"및 "linksClickable"과 같은 옵션을 명시 적 링크에서만 작동시키는 것 (html 태그로 감싸지 않음)은 나에게 매우 오도됩니다.


2
+1 네가 맞아. 패턴과 일치하도록 패턴을 입력하는 옵션이 있어야합니다. 이 방법은 꽤 바보입니다.
— schlingel

47

이 줄을 다음에 추가했습니다 TextView. android:autoLink="web"
아래는 레이아웃 파일에서의 사용법 예입니다.

layout.xml 견본

    <TextView
        android:id="@+id/txtLostpassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:autoLink="email"
        android:gravity="center"
        android:padding="20px"
        android:text="@string/lostpassword"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/txtDefaultpassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:autoLink="web"
        android:gravity="center"
        android:padding="20px"
        android:text="@string/defaultpassword"
        android:textAppearance="?android:attr/textAppearanceSmall" />

string.xml

<string name="lostpassword">If you lost your password please contact <a href="mailto:support@cleverfinger.com.au?Subject=Lost%20Password" target="_top">support@cleverfinger.com.au</a></string>

<string name="defaultpassword">User Guide <a href="http://www.cleverfinger.com.au/user-guide/">http://www.cleverfinger.com.au/user-guide/</a></string>

36

다음은 Android 앱 내에서 텍스트와 하이퍼 링크의 조합을 찾는 사람에게 적합합니다.

에서 string.xml:

<string name="applink">Looking for Digital Visiting card? 
<a href="https://play.google.com/store/apps/details?id=com.themarkwebs.govcard">Get it here</a>
</string>

이제 string다음 View과 같은 방법으로 이것을 사용할 수 있습니다 .

<TextView
    android:id="@+id/getapp"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:gravity="center"
    android:textColor="@color/main_color_grey_600"
    android:textSize="15sp"
    android:text="@string/applink"/>

이제 활동 또는 조각에서 다음을 수행하십시오.

TextView getapp =(TextView) findViewById(R.id.getapp);
getapp.setMovementMethod(LinkMovementMethod.getInstance());

지금은 이 방법 을 설정 android:autoLink="web"하거나 android:linksClickable="true"사용할 필요가 없습니다 .

도움이 되셨기를 바랍니다.


이것은 잘 작동하지만 열린 웹에서 다시 누르면 브라우저를 닫고 앱으로 돌아 가지 않습니다.
— Jachumbelechao Unto Mantekilla

27

이것이 도움이되기를 바랍니다.

String value = "<html>Visit my blog <a href=\"http://www.maxartists.com\">mysite</a> View <a href=\"sherif-activity://myactivity?author=sherif&nick=king\">myactivity</a> callback</html>";
    TextView text = (TextView) findViewById(R.id.text);


    text.setText(Html.fromHtml(value));
    text.setMovementMethod(LinkMovementMethod.getInstance());

3
이것은 잘 작동합니다. 또한 android:autoLink=?에서 제거 해야합니다 TextView.
— sulai

이것이 마침내 나를 위해 일한 것입니다. 유효한 HTML이며 사용하지 않는 android:autoLink=?것이 중요합니다!
— Neal Sanche

Xamarin의 경우 단어에는 밑줄이 표시되지 않고 위의 매개 변수를 사용하여 클릭 할 수 없습니다. autoLink, linksClickable
— maxweber

Xamarin의 설정 및 텍스트 설정 또는 TextFormatted 설정은 단어를 생성하지만 클릭 할 수 없거나 파란색 / 밑줄이 없습니다. 자동 링크 제거도 실패합니다. 링크 클릭 만 제거도 실패합니다. 둘 다 제거도 실패합니다.
— maxweber 2016

helloWorld.TextFormatted = Html.FromHtml (linkURL); 그것의 유무에 관계없이 실패합니다. (파란색이 아닌 연결되지 않음을 클릭 할 수 없음)
— maxweber

25

XML의 텍스트보기에서 이것을 추가 해야하는 것만

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:autoLink="web"/>

24

나를 위해 일한 가장 쉬운 것은 Linkify 를 사용하는 것입니다.

TextView txt_Message = (TextView) view.findViewById(R.id.txt_message);
txt_Message.setText("This is link https://www.google.co.in/");
Linkify.addLinks(txt_Message, Linkify.WEB_URLS);

텍스트보기의 텍스트에서 웹 URL을 자동으로 감지합니다.


사실이지만 클릭 할 수 없습니다.
— FractalBob

링크를 클릭 할 수 있습니다.
— Octavian Ionel

19

다음 번 Richard는 대신 레이아웃 XML에서 TextView 아래에이 코드를 추가해야합니다.

android:autoLink="all"

이것은 이와 같아야합니다.

<TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:text="@string/txtCredits"
    android:id="@+id/infoTxtCredits"
    android:autoLink="all"
    android:linksClickable="true">
</TextView>

t2.setMovementMethod(LinkMovementMethod.getInstance());링크를 클릭 할 수 있도록하기 위해이 코드 ( ) 를 사용할 필요는 없습니다 .

또한 사실은 다음과 같습니다. autoLink 및 linksClickable 을 설정 하는 한 클릭 가능한 링크가 작동하도록 String.xml 파일 에 이것을 추가하는 것을 잊지 마십시오 .

<string name="txtCredits"><a href="http://www.google.com">Google</a></string>

3
나를 위해 작동하지 않습니다. 링크는 실제로 클릭 할 수 있지만 "Google"뿐만 아니라 전체 문자열이 표시됩니다. 실제로, 여기에 대한 답변이나 그 조합은 지금까지 작동하지 않습니다.
— Violet Giraffe 9

@Violet Giraffe에서 장치 또는 에뮬레이터 인터넷이 활성화되어 있고 ON (wifi)으로 설정되어 있거나 LAN에 연결되어 있습니까?
— David Dimalanta

그것은. XML 속성을 사용하여 링크를 클릭 할 수있게 만들지 못했습니다 .Java 코드를 사용해야했습니다. 큰 문제는 아니지만 좋지 않습니다.
— 바이올렛 기린

18

linkify 를 사용하여 : Linkify 는 텍스트와 정규 표현식을 가져 와서 텍스트의 모든 정규식 일치를 클릭 가능한 링크로 바꿉니다.

TextView textView = (TextView) findViewById(R.id.textView);
textView.setText("http://www.domain.com");
Linkify.addLinks(textView, Linkify.WEB_URLS);

잊지 마세요

import android.widget.TextView;

16

다음은 문자열과 데이터가 무엇이든 textView에서 전화와 URL을 선택할 수 있도록하는 한 줄의 Android 코드입니다. 이를 위해 HTML 태그를 사용할 필요가 없습니다.

TextView textView = (TextView)findViewById(R.id.textView1);
textView.setText("some url is www.google.com phone 7504567890 another url lkgndflg.com ");

// Makes the textView's Phone and URL (hyperlink) select and go.
Linkify.addLinks(textView, Linkify.WEB_URLS | Linkify.PHONE_NUMBERS);

13

그 사용 발견 android:autoLink="web"하여

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:autoLink="web"/>

URL에는 문제가 없었지만 연결하려는 전자 메일 주소와 전화 번호가 있었으므로 다음과 같이이 줄을 사용 android:autoLink="all"했습니다.

<TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:autoLink="all"/>

그리고 그것은 매력처럼 작동했습니다.


13

연결 텍스트 색상 관리 여기에 이미지 설명을 입력하십시오

tv_customer_care_no.setLinkTextColor(getResources().getColor(R.color.blue));
  tv_customer_care_no.setText("For us to reach out to you, please fill the details below or contact our customer care at  18004190899 or visit our website http://www.dupont.co.in/corporate-links/contact-dupont.html ");
   Linkify.addLinks(tv_customer_care_no, Linkify.WEB_URLS | Linkify.PHONE_NUMBERS);
   Linkify.addLinks(tv_customer_care_no, Linkify.ALL );

11

해야 하지 사용할 setAutoLinkMask(Linkify.ALL)사용할 때 setMovementMethod(LinkMovementMethod.getInstance())와 Html.fromHTML()올바른 형식에 HTML(예를 들어, 링크 <a href="http://www.google.com/">Google</a>).


10

이것을 사용하십시오 ...

TextView.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent in=new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.twitter.com/"));
                        startActivity(in);
                    }

                });

매니페스트 파일에 권한 추가

<uses-permission android:name="android.permission.INTERNET"/>

1
이것은 작동하지만 앱이 클릭 가능한 TextView 이외의 인터넷 권한이 필요하지 않을 수도 있습니다. 그런 경우에 과잉
— 행동

2
실제로 질문과 관련이 있습니까?
— Darpan

2
이것은 질문과 관련이 없습니다.
— afollestad

1
이것은 결코 실패하지 않을 것입니다!
— Skynet

이 방법을 사용하면 전체 URL이 아닌 앵커 텍스트 만 표시 할 수 있습니다. 앵커 텍스트의 스타일을 지정할 수도 있습니다 (예 : 녹색 및 밑줄).
— 잃어버린 아기

10

이것 만 필요합니다 :

android:autoLink="web"

웹을 참조하여 클릭 할 수있는이 행을 TextView에 삽입하십시오. 이 TextView의 텍스트로 설정된 URL 주소입니다.

예:

 <TextView
    android:id="@+id/textViewWikiURL"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:textStyle="bold"
    android:text="http://www.wikipedia.org/"
    android:autoLink="web" />

10

수락 된 답변은 정확하지만 전화 번호,지도, 이메일 주소 및 일반 링크 등을 의미합니다. http://google.com href 태그가없는 는 XML에 자동 를 사용할 수 없으므로 더 이상 클릭 할 수 없습니다.

내가 찾은 모든 것을 클릭 할 수있는 유일한 솔루션은 다음과 같습니다.

Spanned text = Html.fromHtml(myString);
URLSpan[] currentSpans = text.getSpans(0, text.length(), URLSpan.class);
SpannableString buffer = new SpannableString(text);
Linkify.addLinks(buffer, Linkify.ALL);
for (URLSpan span : currentSpans) {
    int end = text.getSpanEnd(span);
    int start = text.getSpanStart(span);
    buffer.setSpan(span, start, end, 0);
}
textView.setText(buffer);
textView.setMovementMethod(LinkMovementMethod.getInstance());

그리고 TextView에는 없어야합니다 android:autolink. android:linksClickable="true"어느 것도 필요하지 않습니다 . 기본적으로 적용됩니다.


나를 위해이없이 작동, 허용 답변 잘 작동 @Kelly 당신은 문제가 발생한 안드로이드 버전과 장치를 말할 수 있습니까?
— Akhil Dad

myapp://딥 링크의 경우 구성표에서 작동하지 않습니다 .
— CoolMind

7

이것이 TextView에서 클릭 가능하고 보이는 링크를 코드로 해결하는 방법입니다.

private void setAsLink(TextView view, String url){
        Pattern pattern = Pattern.compile(url);
        Linkify.addLinks(view, pattern, "http://");
        view.setText(Html.fromHtml("<a href='http://"+url+"'>http://"+url+"</a>"));
    }

하지만 텍스트를보고 싶습니다. 텍스트를 클릭하면 링크로 리디렉션됩니다 (브라우저에서 열림)? 이 솔루션으로 해결되지 않습니까?
— Duc Tran

6

아래 코드를 사용하십시오.

String html = "<a href=\"http://yourdomain.com\">Your Domain Name</a>"
TextView textview = (TextView) findViewById(R.id.your_textview_id);
textview.setMovementMethod(LinkMovementMethod.getInstance());
textview.setText(Html.fromHtml(html));

6

[Tested in Pre-lollipop as well as in Lollipop and above]

백엔드 또는 리소스 파일에서 HTML 문자열을 가져올 수 있습니다. 텍스트를 리소스 문자열로 입력하는 경우 CDATA태그 를 추가해야합니다 .

<string name="your_text">![CDATA[...<a href="your_link">Link Title</a>  ...]]</string>

그런 다음 코드에서 문자열을 가져 와서 HTML로 할당하고 링크 이동 방법을 설정해야합니다.

String yourText = getString(R.string.your_text);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
   textView.setText(Html.fromHtml(yourText, Html.FROM_HTML_MODE_COMPACT));
} else {
   textView.setText(Html.fromHtml(yourText));
}

try {
   subtext.setMovementMethod(LinkMovementMethod.getInstance());
} catch (Exception e) {
   //This code seems to crash in some Samsung devices.
   //You can handle this edge case base on your needs.
}

5

문제가 발생한 이유는 "네이 키드"주소 만 일치시키기 때문입니다. "www.google.com"또는 " http://www.google.com " 과 같은 것들 .

Html.fromHtml ()을 통해 텍스트를 실행 하면 트릭을 수행해야합니다. 프로그래밍 방식으로해야하지만 작동합니다.


2
TextView의 링크는 문자열의 다른 텍스트와 다른 색상이므로 링크로 인식되고 있다고 생각합니다. 클릭 할 수 없습니다 :-(
— Richard

4

다른 답변을 추가 할 가치가 있는지 모르지만 경우를 대비하여 ...

나는 이것을 두 곳에서 사냥해야했지만 마침내이 버전의 코드가 작동하게되었습니다.

strings.xml :

<string name="name1">&lt;a href="http://www.google.com">link text1&lt;/a></string>
<string name="name2">&lt;a href="http://www.google.com">link text2&lt;/a></string>

myactivity.xml :

<TextView 
    android:id="@+id/textview1"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_marginTop="5dp" />

<TextView 
    android:id="@+id/textview2"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_marginTop="5dp" />

myactivty.java (onCreate ()에서) :

TextView tv1 = (TextView)findViewById(R.id.textview1);
TextView tv2 = (TextView)findViewById(R.id.textview2);

tv1.setText(Html.fromHtml(getResources().getString(R.string.name1)));
tv2.setText(Html.fromHtml(getResources().getString(R.string.name2)));
tv1.setMovementMethod(LinkMovementMethod.getInstance());
tv2.setMovementMethod(LinkMovementMethod.getInstance());

이 텍스트 두 개의 클릭 가능한 하이퍼 링크를 생성합니다 link text1및 link text2있는 구글로 사용자를 리디렉션합니다.


4

자동 링크 전화가 작동하지 않습니다. 다음은 매력처럼 작동했습니다.

TextView tv = (TextView) findViewById(R.id.emergencynos);
String html2="<br><br>Fire - <b><a href=tel:997>997</a> </b></br></br>";        
tv.append(Html.fromHtml(html2));
tv.setMovementMethod(LinkMovementMethod.getInstance());

4

XML 기반 TextView를 사용하는 경우 요구 사항에 따라 두 가지 작업 만 수행하면됩니다.

  1. "This is my WebPage"와 같이 문자열에서 링크를 식별하십시오. xml 또는 코드로 추가 할 수 있습니다.

  2. TextView가있는 xml에서 다음을 추가하십시오.


android:linksClickable="true"

android:autoLink="web"

4

문자열 리소스에 CDATA 추가

Strings.xml

<string name="txtCredits"><![CDATA[<a href=\"http://www.google.com\">Google</a>]]></string>

3

자동 링크를 사용하여 텍스트를 "자동 밑줄로 표시"하지만 텍스트를 관리하는 "onClick"을 만들었습니다. (나는이 문제를 직접 만났다)

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dp"
            android:textSize="18dp"
            android:autoLink="all"
            android:text="@string/twitter"
            android:onClick="twitter"/>

public void twitter (View view)
    {
        try
        {
            Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://twitter.com/onaclovtech"));
            startActivity(browserIntent);

        }
        finally
        {
        }
    }

리소스를 관리하는 앱 (IE 브라우저)으로 인 텐트를 전달하므로 권한이 필요하지 않습니다.

이것이 나를 위해 일한 것입니다. 행운을 빕니다.


클릭 할 수있는 링크를 만들지 않고 전체 TextView를 클릭 할 수있게합니다. 문제는 아닙니다.
— clauziere

동의하지만 때로는 작동하는 해결 방법도 동일합니다. 가장 인기있는 답변이 작성된 후 분명히 5 년이 지났지 만 여전히 문제였으며 6 개월이 지났지 만 같은 문제가 있었지만 다른 해결책으로 작동했습니다.
— onaclov2000

2

getString (R.string.whatever) 대신 getText (R.string.whatever)를 사용해야한다는 것을 알기 위해 너무 많은 시간을 낭비했습니다 ...

어쨌든, 여기에 내가 일하는 방법이 있습니다. 동일한 텍스트보기에도 여러 개의 하이퍼 링크가 있습니다.

    TextView termsTextView = (TextView) getActivity().findViewById(R.id.termsTextView);
    termsTextView.append("By registering your account, you agree to our ");
    termsTextView.append(getText(R.string.terms_of_service));
    termsTextView.append(", ");
    termsTextView.append(getText(R.string.fees));
    termsTextView.append(", and the ");
    termsTextView.append(getText(R.string.stripe_connected_account_agreement));

    termsTextView.setMovementMethod(LinkMovementMethod.getInstance());



            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/termsTextView"/>

문자열 예

    <string name="stripe_connected_account_agreement"><a href="https://stripe.com/connect/account-terms">Stripe Connected Account Agreement</a></string>

이것은 훨씬 더 간단하고 사용하기 쉽습니다. 이 때문에 동적으로 추가 된 TextView에서 작동하는 사용자 정의 텍스트가있는 여러 링크가 있습니다. 이것은 가능한 한 많은 찬성 투표가 필요합니다. Spanned 문자열, 사용자 정의 TextViews 및 HtmlCompat.fromHtml 메소드에 대해 머리를 아프게했습니다. @ luca992 감사합니다.
— Parth Patel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.