පෙළ දර්ශනයක ක්ලික් කළ හැකි සබැඳි සාදා ගන්නේ කෙසේද?


1016

මට පහත දැක්වෙන පෙළ දර්ශනය අර්ථ දක්වා ඇත:

<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>

එහිදී @string/txtCreditsඅඩංගු වැලක් සම්පතක් <a href="some site">Link text</a>.

ඇන්ඩ්‍රොයිඩ් ටෙක්ස්ට් වීව් හි ඇති සබැඳි ඉස්මතු කරයි, නමුත් ඒවා ක්ලික් කිරීම් වලට ප්‍රතිචාර නොදක්වයි. මම කරන වැරැද්ද කාටහරි කියන්න පුළුවන්ද? මේ තරම් සරල දෙයක් සඳහා මගේ ක්‍රියාකාරකම තුළ පෙළ දර්ශනය සඳහා onClickListener එකක් සැකසිය යුතුද?

මගේ සංගීත සම්පත නිර්වචනය කරන ආකාරය සමඟ එය සම්බන්ධ බව පෙනේ. මෙය ක්‍රියාත්මක නොවේ:

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

නමුත් මෙය සිදු වන්නේ:

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

සම්පුර්ණ URL එක පෙන්වීමට වඩා පෙළ සබැඳියක් පෙන්වීමට මා කැමති නිසා එය ඉතා වැදගත් වේ.


68
android: autoLink = "වෙබ්" මෙය xml වෙත එකතු කළ යුතු ප්‍රධාන රේඛාව වන අතර එය චාම් ලෙස ක්‍රියා කරයි. ස්තූතියි ic රිචඩ්
jeet.chanchawat

1
<string name = "txtCredits"> <a href=" google.com"> www.google.com </a> </ string > ඉහත සඳහන් නූල භාවිතා කර එය ක්‍රියාත්මක වේ. Href සහ නැංගුරම් ටැගය සහිත නූල සමාන විය යුතු බවත්, වැඩ කිරීමට .com හෝ. * තිබිය යුතු බවත් දැන ගැනීමට හේතුව සොයා බැලිය යුතුය
Shaik Khader

<string name = "txtCredits"> මෙහි සමහර පෙළ <a href=" google.com"> ගූගල් </a> </ string > ඉහත ස්නිපටය සඳහා ක්ලික් කරන්න මෙහි ඇති සමහර පෙළ මගේ නඩුවේදී ක්‍රියා නොකළ යුතුය මම කුමක් කළ යුතුද?
අජේ තාකූර්

උත්සාහ කරන්න github.com/ajaysahani/MultiActionTextView
Zar E Ahmer

android:focusable="true"මගේ ගැටලුව විසඳුවා
Khang .NT

Answers:


1242

ඒපීඅයි නිරූපණ වල තැන්පත් කර තිබීම මගේ ගැටලුවට විසඳුම සොයා ගතිමි:

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
    android:id="@+id/text2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/txtCredits"/>

එය විසඳීය. අනාවරණය කර ගැනීමට සහ නිවැරදි කිරීමට තරමක් අපහසුය.

වැදගත් : ඔබ autoLink="web"අමතන්නේ නම් ඉවත් කිරීමට අමතක නොකරන්න setMovementMethod().


19
සමහර විට එය මා පමණක් විය හැකිය, නමුත් ඔබ මෙය කවදා හෝ EditText සමඟ කරන්නේ ඇයි?
ජස්ටින්

1
ඉලක්කය සපුරා ගැනීම සඳහා අවශ්‍ය වන්නේ setMovementMethod පමණි.
superarts.org

3
කොමිෂන් සභාවක් ලෙස, මම සැම්සුන්ග් ගැලැක්සි එස් 3 ඕඑස් 4.3 සමඟ දැක ඇති අතර එය "setMovementMethod (LinkMovementMethod.getInstance ())" භාවිතා කරන විට බිඳ වැටෙනු ඇත, එබැවින් එය සැලකිල්ලට ගන්න, එය එකතු කිරීමට පෙර මට වලංගු භාවයක් නිර්මාණය කිරීමට සිදුවිය
ජෝර්ජ් අගුවිලර්

40
මෙහෙත් එහෙමයි. SetMovementMethod () අමතන්නේ නම්, XML ගොනුවේ autolink = "web" ඉවත් කිරීම අවශ්‍ය බව සලකන්න, නැතිනම් සබැඳිය ක්‍රියා නොකරනු ඇත. අදහස් දැක්වීමට ස්තූතියි
voghDev

6
ඔබේ xml හි "ස්වයංක්‍රීය ලින්ක්" ගුණාංගය භාවිතා කරන්න. උදා: android: autoLink = "web"
කල්පේෂ්

543

මම පමණක් භාවිතා කරන android:autoLink="web"අතර එය හොඳින් ක්‍රියාත්මක වේ. සබැඳිය ක්ලික් කිරීම බ්‍රව්සරය විවෘත කර නිවැරදි පිටුව පෙන්වයි.

මට අනුමාන කළ හැකි එක් දෙයක් නම් වෙනත් මතයක් සබැඳියට ඉහළින් ඇති බවයි. විනිවිද පෙනෙන යමක් මුළු දෙමාපියටම පුරවන නමුත් සබැඳියට ඉහළින් කිසිවක් පෙන්වන්නේ නැත. මෙම අවස්ථාවේදී ක්ලික් කිරීම සබැඳිය වෙනුවට මෙම දර්ශනයට යයි.


3
ඉහත වැඩි විස්තර එකතු කරන ලදි. මම එය <string name = "txtCredits"> <a href=" google.com"> ගූගල් </a> </ string > ලෙස අර්ථ දක්වන්නේ කෙසේද? පෙනෙන ආකාරයට මෙය අවසර දී ඇති නමුත් එය මට වැඩ නොකරයි.
රිචඩ්

6
ඔබ linkify ස්වයංක්‍රීයව භාවිතා කරන්නේ නම් ඔබට href කොටස අවශ්‍ය නොවේ. මෙහෙයුම් පද්ධතිය විසින් එය යූආර්එල් සඳහා විග්‍රහ කර සෑම යූආර්එල් එකක්ම ක්ලික් කළ හැකි සබැඳියක් බවට පරිවර්තනය කරයි. නමුත් මෙය ගූගල් යන වචනය ගූගල්.කොම් සමඟ සම්බන්ධ වීමට හේතු නොවේ. එය www.google.com සබැඳියක් ලෙස පෙන්වනු ඇත.
Janusz

ස්වයංක්‍රීය සම්බන්ධතාවයක් භාවිතා කිරීම මටද පරිපූර්ණයි, දෙමව්පියන් නොමැතිව සරල පෙළ දර්ශනය.
euther

2
android: දුරකථන අංක, ලිපින සහ විද්‍යුත් තැපැල් ලිපිනයන් (හෝ ඉහත සියල්ලම) සම්බන්ධ කිරීම සඳහා ස්වයංක්‍රීය සබැඳියද විශිෂ්ට ලෙස ක්‍රියා කරයි.
CloudyMusic

54
නැත, එසේ නොවේ, මන්ද යත් ඔබට URL ට වඩා වෙනස් දර්ශන පෙළක් සහිත නැංගුරම් ටැගයක් භාවිතා කිරීමට අවශ්‍ය නැතිනම් මෙම පිළිතුර ක්‍රියා නොකරනු ඇත
cprcrack

388

මේ සමඟ යම් කාලයක් ගත කිරීමෙන් පසුව, මම එය සොයාගෙන ඇත:

  • 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 .. කිසියම් යාවත්කාලීන කිරීමක් තිබේද?
ඩාර්පාන්

20
<a href="http://www.google.com">Go to Google</a>ස්වයංක්‍රීය ලින්ක් සඳහා එය ක්‍රියා නොකරන බව පෙන්වා දීමට ස්තූතියි . SO පිළිබඳ බොහෝ පිළිතුරු සඳහා, එය සඳහන් කළ එකම එක මෙයයි. ඔබට ස්තුතියි!
cwhsu

98

ඉහත විසඳුම් මට වැඩ කළේ නැත, නමුත් පහත සඳහන් දෑ සිදු විය (එය ටිකක් පිරිසිදු බවක් පෙනේ).
පළමුවෙන්ම, සම්පතෙහි, HTML එන්ටි කේතනය භාවිතා කරමින් ඔබේ ටැග් විවෘත කිරීමේ ෂෙව්රොන් නිර්වචනය කරන්න, එනම්:

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

සහ නැත:

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

පොදුවේ ගත් කල, නූලෙහි ඇති සියලුම ෂෙව්රොන් සංකේතවත් කරන්න. BTW, සබැඳිය ආරම්භ විය යුතුයhttp://

ඉන්පසු ( මෙහි යෝජනා කර ඇති පරිදි ) මෙම විකල්පය ඔබේ පෙළ දර්ශනයේ සකසන්න:

 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)));

එයයි, රීජෙක්ස් හෝ වෙනත් අත්පොත අවශ්‍ය නොවේ.


9
මෙම කේතය ක්‍රියාත්මක කරන සෑම අවස්ථාවකම මෙය HTML විග්‍රහකයක් නිර්මාණය කරයි. ලැයිස්තු අයිතමයක් තුළ හෝ ඔබගේ යෙදුමේ වෙනත් කාර්ය සාධන තීරණාත්මක ස්ථානවල සබැඳි නිර්මාණය කිරීමට ඔබ මෙය භාවිතා කරන්නේ නම් ඒ ගැන සැලකිලිමත් වන්න. ලැයිස්තුවක් නිර්මාණය කිරීමේදී මෙය මගේ getView ක්‍රම ක්‍රියාත්මක කිරීමේ කාලය 50% කින් වැඩි කරයි
Janusz

1
URL හි ඇති අවකාශයන් ආදේශ කළ යුතුය%20
නිකොලස් ටයිලර්

<![CDATA[ ... ]]>ටැගය තුළ ඔබේ නූල ඔතා ගැනීමෙන් ඔබට ආයතන කේතන ගැටළු මඟහරවා ගත හැකිය .
පෝල් ලැමර්ට්ස්මා

1
මට වැඩ, ස්තූතියි. <![CDATA[...]]>ටැගය සමඟ වැඩ නොකරයි .
ricky.tribbia

මෙය පිළිතුර විය යුතුය! මගේ ස්වදේශීය යෙදුම සමඟ හොඳින් වැඩ කළා
අජේ කුල්කර්නි

73

මම මෙය සරලව භාවිතා කළෙමි

Linkify.addLinks(TextView, Linkify.ALL);

මෙහි දක්වා ඇති සබැඳි ක්ලික් කළ හැකි


4
මෙම පිළිතුර හොඳම ය. සෑම ඇන්ඩ්‍රොයිඩ් අනුවාදයකම ක්‍රියා කරන අතර පෙළ දර්ශනය තුළ පෙළ සැකසූ විට අපට එම ක්‍රමය එකතු කළ යුතුය. පාරිතෝෂිකය: ක්ලික් කළ හැකි අභිරුචි කළ හැකි සබැඳි එක් කිරීමට එය අපට ඉඩ දෙයි
Kerwan

3
ඇත්තෙන්ම සරලම සහ හොඳම පිළිතුර. එය එකවර විද්‍යුත් තැපෑල / වෙබ් සඳහා ක්‍රියා කරයි .... ස්තූතියි මිනිසා !!!
ඉම්රාන් අහමඩ්

1
ඔබට නවතම උසස් විශේෂාංග කිහිපයක් අවශ්‍ය නම් LinkifyCompat භාවිතා කරන්න
Vaiden

හොඳයි, එය <a href...ක්ලික් කිරීමකින් තොරව url කරයි
Pavel

එමඟින් සියලුම "html" ටැගයන් ඒ අනුව ක්‍රියා කරයි, උදා <b> ... </b> යනාදිය
Array

69

ඔබට HTML වැනි සබැඳියක් එක් කිරීමට අවශ්‍ය නම්, ඔබ කළ යුත්තේ:

  • HTML වැනි නූලක් එක් කරන්න:

     <string name="link"><a href="https://www.google.pl/">Google</a></string>
  • කිසිදු සම්බන්ධක-විශේෂිත වින්‍යාසයක් නොමැති පිරිසැලසුමට ඔබේ දැක්ම එක් කරන්න:

     <TextView
        android:id="@+id/link"
        android:text="@string/link" />`
  • ඔබේ පෙළ දර්ශනයට ක්‍රමලේඛිතව සුදුසු චලන ක්‍රමයක් එක් කරන්න:

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

ඒක තමයි! ඔව්, "ස්වයංක්‍රීය සබැඳිය" සහ "සබැඳි ක්ලික් කළ හැකි" වැනි විකල්පයන් පැහැදිලි සබැඳි මත පමණක් වැඩ කිරීම (HTML ටැග් වලට ඔතා නැත) මටත් නොමඟ යවන සුළුය ...


2
+1 ඔබ හරි. මෙය ගැලපෙන පරිදි ඔබේම රටාවක් ඇතුළත් කිරීමට විකල්පයක් තිබිය යුතුය. මේ ආකාරයෙන් එය ගොළු ය.
schlingel

48

මම මෙම පේළියට එකතු කළේ 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>

40

ඇන්ඩ්‍රොයිඩ් යෙදුමක් තුළ පෙළ සහ හයිපර්ලින්ක් සංයෝජනයක් සොයන ඕනෑම කෙනෙකුට පහත සඳහන් දෑ ක්‍රියා කළ යුතුය.

තුළ 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"භාවිතා කිරීමට අවශ්‍ය නොවේ .

මෙය ඔබට ප්‍රයෝජනවත් වේ යැයි මම බලාපොරොත්තු වෙමි.


මෙය හොඳින් ක්‍රියාත්මක වේ, නමුත් ඔබ වෙබයෙන් නැවත එබූ විට, බ්‍රව්සරය පමණක් වසා දමන්න, නමුත් යෙදුමට ආපසු නොයන්න.
ජචුම්බෙලචාවෝ උන්ටෝ මැන්ටකිලා

28

මෙය ඔබට උපකාරී වනු ඇතැයි මම බලාපොරොත්තු වෙමි;

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=?වැදගත්ය!
නීල් සැන්චේ

Xamarin සඳහා, වචනය පෙන්වන නමුත් අවධාරනය කර නොමැති අතර ඉහත සඳහන් කර ඇති දේ ක්ලික් කළ නොහැක. මෙම පරාමිතීන් නොවේ: ස්වයංක්‍රීය ලින්ක්, සබැඳි ක්ලික් කළ හැකි
මැක්ස්වෙබර්

Xamarin සඳහා ඒවා සැකසීම සහ පෙළ සැකසීම හෝ TextFormatted සැකසීම ද වචනය ලබා දෙයි, නමුත් එය ක්ලික් කළ නොහැකි හෝ නිල් / යටි ඉරි ඇඳ නැත. ස්වයංක්‍රීය සබැඳිය ඉවත් කිරීම ද අසාර්ථක වේ. සබැඳි පමණක් ඉවත් කිරීම ක්ලික් කළ හැකි ද අසමත් වේ. දෙකම ඉවත් කිරීම ද අසාර්ථක වේ.
maxweber

helloWorld.TextFormatted = Html.FromHtml (linkURL); ඒවා සමඟ සහ නැතිව ද අසමත් වේ. (සම්බන්ධ කර නැත, නිල් නොවේ, ක්ලික් කළ නොහැක)
maxweber

27

Xml හි පෙළ දර්ශනය තුළ මෙය එකතු කිරීමට ඔබට අවශ්‍ය වන්නේ කුමක්ද?

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

27

මට වැඩ කළ පහසුම දෙය නම් 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

සබැඳි ක්ලික් කළ හැකිය.
ඔක්ටේවියන් අයෝනෙල්

20

රිචඩ්, ඊළඟ වතාවේ, ඔබ මෙම කේතය පෙළ දර්ශනය යටතේ XML පිරිසැලසුමෙහි එක් කළ යුතුය.

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
මට වැඩ කරන්නේ නැහැ. සබැඳිය සැබවින්ම ක්ලික් කළ හැකි නමුත් "ගූගල්" පමණක් නොව මුළු නූලම දර්ශනය වේ. ඇත්ත වශයෙන්ම, මෙහි කිසිදු පිළිතුරක් හෝ එහි සංයෝජනයක් මෙතෙක් ක්‍රියාත්මක නොවේ.
වයලට් ජිරාෆ්

ඔබගේ උපාංගය හෝ ඉමුලේටර් අන්තර්ජාලය සක්‍රීය කර එය ON (wifi) ලෙස සකසා තිබේද? නැතහොත් LAN වයලට් ජිරාෆ් සම්බන්ධ කර තිබේද?
ඩේවිඩ් ඩිමලන්ත

එය. එක්ස්එම්එල් ගුණාංග භාවිතයෙන් සබැඳි ක්ලික් කිරීමට මට කිසි විටෙකත් නොහැකි විය, ඒ සඳහා ජාවා කේතය වෙත යොමුවීමට සිදුවිය. එය ලොකු දෙයක් නොවේ, නමුත් හොඳ නැත.
වයලට් ජිරාෆ්

19

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;

18

පෙළ සහ දත්ත යනු කුමක් වුවත් පෙළ දර්ශනයෙන් දුරකථනය සහ යූආර්එල් තෝරා ගත හැකි වන පරිදි ඇන්ඩ්‍රොයිඩ් කේතයක් මෙහි ඇත. මේ සඳහා ඔබට කිසිදු 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);

16

Linkify පෙළ වර්ණයද කළමනාකරණය කරන්න රූප විස්තරය මෙහි ඇතුළත් කරන්න

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 );

14

android:autoLink="web"මෙසේ භාවිතා කරන බව මම දුටුවෙමි

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

යූආර්එල් සඳහා හරි වැඩ කළ නමුත් මට සම්බන්ධ වීමට අවශ්‍ය විද්‍යුත් තැපැල් ලිපිනයක් සහ දුරකථන අංකයක් තිබූ බැවින් මම මේ රේඛාව android:autoLink="all"මේ ආකාරයෙන් භාවිතා කළෙමි

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

එය චාම් එකක් මෙන් ක්‍රියා කළේය.


12

නිසි ලෙස ආකෘතිගත කළ සබැඳි භාවිතා කරන විට සහ භාවිතා නොකරන බවට වග බලා ගන්න (උදාහරණයක් ලෙස ).setAutoLinkMask(Linkify.ALL)setMovementMethod(LinkMovementMethod.getInstance())Html.fromHTML()HTML<a href="http://www.google.com/">Google</a>


11

මෙය භාවිතා කරන්න...

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
මෙය ක්‍රියාත්මක වනු ඇත, නමුත් මෙම ක්ලික් කළ හැකි පෙළ දර්ශනයෙන් ඔබ්බට යෙදුමට අන්තර්ජාල අවසරය අවශ්‍ය නොවන බව මතක තබා ගන්න. සමහර විට එවැනි අවස්ථාවන්හිදී
අධික ලෙස මරා දැමීම

2
එය සැබවින්ම ප්‍රශ්නයට සම්බන්ධද?
ඩාර්පාන්

2
මෙය ප්‍රශ්නයට අදාළ නොවේ.
afollestad

1
මෙය කිසි විටෙකත් අසාර්ථක නොවනු ඇත!
ස්කයිනෙට්

මම මෙම ක්‍රමයට කැමතියි එය අපට සම්පූර්ණ URL එකට වඩා නැංගුරම් පෙළ පෙන්වීමට ඉඩ සලසයි. නැංගුරම් පා text ය ද වර්ණ ගැන්විය හැකිය. උදා: වර්ණ කොළ සහ යටි ඉරි.
නැතිවූ දරුවා

11

ඔබට අවශ්‍ය වන්නේ මෙය පමණි:

android:autoLink="web"

මෙම පේළිය 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" />

11

පිළිගත් පිළිතුර නිවැරදියි, නමුත් එයින් අදහස් වන්නේ දුරකථන අංක, සිතියම්, ඊමේල් ලිපින සහ නිත්‍ය සබැඳි උදා http://google.com.

මා සොයාගත් සෑම දෙයක්ම ක්ලික් කළ හැකි එකම සම්පූර්ණ විසඳුම පහත දැක්වේ:

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());

පෙළ දර්ශනය නොතිබිය යුතුය android:autolink. android:linksClickable="true"එක්කෝ අවශ්‍යතාවයක් නැත; එය පෙරනිමියෙන් සත්‍ය වේ.


මට එය නොමැතිව මෙය ක්‍රියාත්මක විය, පිළිගත් පිළිතුර හොඳින් ක්‍රියාත්මක විය elly කෙලී ඔබට ගැටලුව ඇති ඇන්ඩ්‍රොයිඩ් අනුවාදය සහ උපාංගය පැවසිය හැකිද?
අඛිල් තාත්තා

myapp://යෝජනා ක්‍රම සඳහා ක්‍රියා නොකරයි (ගැඹුරු සම්බන්ධ කිරීම සඳහා).
CoolMind

8

පෙළ දර්ශනයක (කේතය අනුව) ක්ලික් කළ හැකි සහ දෘශ්‍යමාන සබැඳි මම විසඳුවේ එලෙසයි

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>"));
    }

නමුත් මම පා see ය දැකීමට කැමතියි. පෙළ ක්ලික් කරන විට එය සබැඳිය වෙත හරවා යවයි (බ්‍රව්සරය විසින් විවෘත කරන ලදි)? මෙම විසඳුම එය විසඳන්නේ නැත, එසේ ද?
ඩක් ට්‍රාන්

7

පහත කේතය භාවිතා කරන්න:

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 () හරහා ඔබේ පෙළ ධාවනය කිරීමෙන් උපක්‍රමය කළ යුතුය. ඔබ එය ක්‍රමානුකූලව කළ යුතු නමුත් එය ක්‍රියාත්මක වේ.


3
පෙළ දර්ශනයේ ඇති සබැඳි නූල්වල ඇති වෙනත් පෙළට වඩා වෙනස් වර්ණයක් වන බැවින් ඒවා සබැඳි ලෙස හඳුනාගෙන ඇතැයි මම සිතමි. ඒවා ක්ලික් කළ නොහැක :-(
රිචඩ්

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 මත පදනම් වූ පෙළ දර්ශනය භාවිතා කරන්නේ නම්, ඔබේ අවශ්‍යතාවය සඳහා ඔබ කළ යුත්තේ කරුණු දෙකක් පමණි:

  1. "මෙය මගේ වෙබ් පිටුව" වැනි ඔබේ සබැඳිය හඳුනා ගන්න. ඔබට එය xml හෝ කේතයෙන් එකතු කළ හැකිය.

  2. පෙළ දර්ශනය ඇති 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

පෙළ ස්වයංක්‍රීයව යටින් ඉරි ඇඳීමට මම ස්වයංක්‍රීය සම්බන්ධකය භාවිතා කරමි, නමුත් එය කළමනාකරණය කරන "ඔන්ක්ලික්" එකක් සාදා ඇත. (මම මෙම ගැටලුවට මුහුණ දුන්නා)

        <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 බ්‍රව්සරය) අභිප්‍රාය ලබා දෙන බැවින් කිසිදු අවසරයක් අවශ්‍ය නොවේ.

මට වැඩ කළේ මෙයයි. වාසනාව.


ඔබ ක්ලික් කළ හැකි සබැඳියක් සාදන්නේ නැත, ඔබ මුළු පෙළ දර්ශනයම ක්ලික් කළ හැකි ලෙස තබයි ... එය ප්‍රශ්නය නොවේ.
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>

මෙය වඩාත් straight ජු හා භාවිතා කිරීමට පහසුය. ගතිකව එකතු කරන ලද පෙළ දර්ශනයක වැඩ කරන අභිරුචි පෙළ සමඟ මට බහු සම්බන්ධතා ඇත. මේ සඳහා හැකි උපරිම ඉහළ නැංවීම් අවශ්‍ය වේ. පුළුල් කළ නූල්, අභිරුචි පෙළ දර්ශන සහ HtmlCompat.fromHtml ක්‍රම හරහා මගේ හිස කැඩී ඇත. ගොඩාක් ස්තූතියි @ luca992.
පාර්ත් පටෙල්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.