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());링크를 클릭 할 수 있도록하기 위해이 코드 ( ) 를 사용할 필요는 없습니다 .

또한 사실은 다음과 같습니다. autoLinklinksClickable 을 설정 하는 한 클릭 가능한 링크가 작동하도록 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 text1link 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.