টেক্সটভিউতে ক্লিকযোগ্যযোগ্য লিঙ্কগুলি কীভাবে তৈরি করবেন?


1003

আমি নিম্নলিখিত টেক্সটভিউ সংজ্ঞায়িত করেছি:

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

অ্যান্ড্রয়েড টেক্সটভিউতে লিঙ্কগুলি হাইলাইট করছে, তবে তারা ক্লিকগুলিতে সাড়া দেয় না। কেউ আমাকে বলতে পারে যে আমি কী ভুল করছি? এর মতো সরল কিছু করার জন্য আমাকে কি আমার ক্রিয়াকলাপে টেক্সটভিউয়ের জন্য একটি ক্লিকক্লিসল্টার সেট করতে হবে?

দেখে মনে হচ্ছে এটি আমার স্ট্রিংয়ের সংস্থানটি যেভাবে সংজ্ঞায়িত করছে তার সাথে এটি করতে হবে। এটা কাজ করে না:

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

তবে এটি করে:

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

কোনটি গুঞ্জনজনক কারণ পুরো URLটি দেখানোর চেয়ে আমি কোনও পাঠ্য লিঙ্কটি প্রদর্শন করব।


67
অ্যান্ড্রয়েড: অটোলিঙ্ক = "ওয়েব" এটি মূল লাইনটি এক্সএমএল যুক্ত করা দরকার এবং এটি কবজির মতো কাজ করে। ধন্যবাদ @ রিচার্ড
jeet.chanchawat

1
<স্ট্রিং নাম = "txtCredits"> <a href=" google.com "> www.google.com </a> </ string > উপরের স্ট্রিং ব্যবহার করুন এবং এটি কাজ করে। জানা গেছে যে হারেফের সাথে এবং অ্যাঙ্কর ট্যাগের সাথে স্ট্রিংটি অবশ্যই একই রকম হতে হবে এবং কম। কম বা। * কাজ করতে হবে তা যাচাই করা দরকার কেন
শাইখ খাদার

<স্ট্রিং নাম = "txtCredits"> এখানে কিছু পাঠ্য <a href=" google.com "> গুগল </a> </ string > উপরের স্নিপেটের জন্য এখানে কিছু পাঠ্য আমার ক্ষেত্রে কাজ করা উচিত নয় আমি কী করব?
অজয় টাকুর


android:focusable="true"আমার সমস্যা সমাধান করুন
খং .এনটি

উত্তর:


1228

এপিআই ডেমোতে সমাহিত আমি আমার সমস্যার সমাধান খুঁজে পেয়েছি:

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
হতে পারে এটি কেবল আমি, তবে আপনি কেন কখনও এডিটেক্সট দিয়ে এটি করবেন?
জাস্টিন

1
লক্ষ্য অর্জনের জন্য শুধুমাত্র সেটমোভমেন্টমেডোড প্রয়োজন।
superarts.org

3
ঠিক একটি কমেন্ট হিসাবে, আমি ওএস 4.3 সহ কিছু স্যামসাং গ্যালাক্সি এস 3 দেখেছি যা ক্র্যাশ হয়ে গেছে যখন "সেটমোভমেন্টমেথড (লিংকমোভমেন্টমেথড.জেটআইনস্ট্যান্স ()) ব্যবহার করা হয়েছে, সুতরাং কেবল এটি বিবেচনায় রাখুন, এটি যুক্ত করার আগে আমাকে একটি বৈধতা তৈরি করতে হয়েছিল
জর্জি Aguilar

40
একই অবস্থা. নোট করুন যদি সেটমোভমেন্টমেডোড () বলা হয় তবে এক্সএমএল ফাইলে অটলিংক = "ওয়েব" অপসারণ করা দরকার, অন্যথায় লিঙ্কটি কাজ করবে না। মন্তব্যের জন্য ধন্যবাদ
ভোগদেভ

6
কেবলমাত্র আপনার এক্সএমএলে "অটোলিঙ্ক" বৈশিষ্ট্যটি ব্যবহার করুন উদাহরণস্বরূপ: অ্যান্ড্রয়েড: অটোলিঙ্ক = "ওয়েব"
কলপেশ

533

আমি কেবল ব্যবহার করছি android:autoLink="web"এবং এটি সূক্ষ্ম কাজ করে। লিঙ্কটির একটি ক্লিক ব্রাউজারটি খুলবে এবং সঠিক পৃষ্ঠাটি দেখায়।

একটি জিনিস আমি অনুমান করতে পারি যে অন্য কিছু ভিউ লিঙ্কের উপরে। স্বচ্ছ কিছু এমন কিছু পুরো পিতামাতাকে পূরণ করে তবে লিঙ্কের উপরে কিছু প্রদর্শন করে না। এক্ষেত্রে ক্লিকটি লিঙ্কের পরিবর্তে এই দৃশ্যে যায়।


3
উপরে আরও তথ্য যুক্ত করা হয়েছে। আমি কীভাবে স্ট্রিংটিকে <স্ট্রিং নাম = "txtCredits"> <a href=" google.com"> গুগল </a> </ string > হিসাবে সংজ্ঞায়িত করছি ? দেখে মনে হচ্ছে এটি অনুমোদিত তবে এটি আমার পক্ষে কাজ করছে না।
রিচার্ড

6
আপনি যদি লিঙ্কাইফাই অটো ব্যবহার করেন তবে আপনার href অংশের দরকার নেই। ওএস স্ট্রিংগুলি ইউআরএলগুলির জন্য এটি বিশ্লেষণ করবে এবং প্রতিটি ইউআরএলকে ক্লিকযোগ্য লিঙ্কে রূপান্তর করবে। তবে এর ফলে গুগল শব্দটি গুগল ডটকমের সাথে যুক্ত হবে না। এটি লিঙ্ক হিসাবে www.google.com প্রদর্শন করবে।
জানুজ্জ

অটোলিংক ব্যবহার আমার পক্ষেও নিখুঁত কাজ করে, পিতা-মাতাকে ছাড়াই সরল পাঠ্যদর্শন।
ইথার

2
অ্যান্ড্রয়েড: ফোন নম্বর, ঠিকানা এবং ইমেল ঠিকানাগুলি (বা উপরের সমস্তটি) লিঙ্কিফাই করার জন্য অটোলিঙ্কও দুর্দান্ত কাজ করে।
ক্লাউডি মিউজিক

54
না এটি নয়, কারণ এই URL টি কার্যকর হয় না যদি আপনি URL থেকে আলাদা কোনও প্রদর্শন পাঠ্যের সাথে একটি অ্যাঙ্কর ট্যাগ ব্যবহার করতে না চান
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"এক্সএমএল সেট করা থাকলে ওভাররাইড হবে view.setMovementMethod(LinkMovementMethod.getInstance());(যেমন; তৃতীয় ধরণের লিঙ্কগুলি হাইলাইট করা হবে, তবে ক্লিকযোগ্য নয়)।

গল্পটির নৈতিকতা আপনার কোডটিতে ব্যবহার করা view.setMovementMethod(LinkMovementMethod.getInstance());হয়েছে এবং নিশ্চিত করুন যে আপনি android:autoLink="web"যদি সমস্ত লিঙ্ক ক্লিকযোগ্য হতে চান তবে আপনার এক্সএমএল বিন্যাসে নেই don't


setMovementMethod দ্বিতীয় বিকল্প উল্লেখ করেছে অর্থাত সাথে কাজ করে না google.com .. কোন আপডেট?
দর্পণ

16
<a href="http://www.google.com">Go to Google</a>অটলিঙ্কের জন্য কাজ করবে না তা নির্দেশ করার জন্য ধন্যবাদ। এসও তে এত উত্তরের জন্য, এটি কেবলমাত্র এটির উল্লেখ করেছে। ধন্যবাদ!
সিডব্লিউএসইউ

এই এক কাজ করে। এপিআই 29
রিচিক বসু 19

96

উপরের সমাধানগুলি আমার পক্ষে কার্যকর হয়নি তবে নিম্নলিখিতগুলি (এবং এটি কিছুটা পরিষ্কার মনে হয়) করে did
প্রথমে, স্ট্রিং রিসোর্সে, আপনার ট্যাগ খোলার শেভ্রনগুলি এইচটিএমএল সত্তা এনকোডিং ব্যবহার করে সংজ্ঞায়িত করুন, যেমন:

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

এবং না:

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

সাধারণভাবে, সমস্ত শেভরনকে তার মতো স্ট্রিংয়ে এনকোড করুন। বিটিডাব্লু, লিঙ্কটি অবশ্যই শুরু করা উচিত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)));

এটি হ'ল কোনও রেজিক্স বা অন্য ম্যানুয়াল হ্যাকের প্রয়োজন নেই।


7
এই কোডটি কার্যকর করার সময় এটি একটি HTML পার্সার তৈরি করবে। আপনি যদি কোনও তালিকার আইটেমের ভিতরে লিঙ্ক তৈরি করতে বা আপনার অ্যাপ্লিকেশনটিতে অন্যান্য পারফরম্যান্সের সমালোচনামূলক স্থানে এটি ব্যবহার করেন তবে সে সম্পর্কে সচেতন হন। একটি listitem নির্মাণের সময় এই আমার getView পদ্ধতি চালু হওয়ার সময়ের বৃদ্ধি 50%
Janusz

1
এছাড়াও ইউআরএলের স্পষ্ট স্থানগুলি অবশ্যই প্রতিস্থাপন করতে হবে%20
নিকোলাস টাইলার

আপনি আপনার স্ট্রিংটিকে <![CDATA[ ... ]]>ট্যাগে মোড়ানো দ্বারা সত্তা এনকোডিংয়ের সমস্যাগুলি এড়াতে পারেন ।
পল ল্যামার্টসমা

1
আমার জন্য কাজ, আপনাকে ধন্যবাদ। <![CDATA[...]]>ট্যাগ নিয়ে কাজ করছেন না ।
রিকি.টিরিবিয়া

এই উত্তর হওয়া উচিত! আমার নেটিভ অ্যাপ্লিকেশনটির সাথে পুরোপুরি ভাল কাজ করেছেন
অজয় কুলকার্নি

68

আমি এই সহজভাবে ব্যবহার

Linkify.addLinks(TextView, Linkify.ALL);

লিঙ্কগুলি এখানে প্রদত্ত ক্লিকযোগ্য করে তোলে


4
এই উত্তরটি সেরা। প্রতিটি অ্যান্ড্রয়েড সংস্করণে কাজ করে এবং টেক্সটভিউতে পাঠ্য সেট থাকা অবস্থায় আমাদের কেবল সেই পদ্ধতিটি যুক্ত করতে হবে। বোনাস: এটি আমাদের পছন্দসই লিঙ্কগুলিকে ক্লিকযোগ্য যুক্ত করার অনুমতি দেয়
কেরওয়ান

3
সত্যিই সহজ এবং সর্বোত্তম উত্তর। এটি একই সাথে ইমেল / ওয়েবের জন্য কাজ করে .... ধন্যবাদ ম্যান !!!
ইমরান আহমেদ

1
ব্যবহারের LinkifyCompat আপনি নতুন উন্নত বৈশিষ্ট্য কিছু প্রয়োজন হলে
Vaiden স্বাগতম

ভাল, এটি <a href...ক্লিকযোগ্য ছাড়াই url তৈরি করে
পাভেল

এটি সেই অনুযায়ী কাজের ভিতরে সমস্ত "এইচটিএমএল" ট্যাগ তৈরি করে, যেমন <b> ... </ b> ইত্যাদি
অ্যারে

67

আপনি যদি এইচটিএমএল-এর মতো লিঙ্ক যুক্ত করতে চান তবে আপনার যা করতে হবে তা হ'ল:

  • এইচটিএমএল-জাতীয় স্ট্রিং যুক্ত করুন:

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

এটাই! এবং হ্যাঁ, "স্বতঃলিঙ্ক" এবং "লিঙ্কস ক্লিকযোগ্য" এর মতো বিকল্পগুলি কেবলমাত্র সুস্পষ্ট লিঙ্কগুলিতে কাজ করা (এইচটিএমএল ট্যাগগুলিতে আবৃত নয়) আমার পক্ষেও খুব বিভ্রান্তিকর ...


2
+1 আপনি ঠিক বলেছেন। আপনার স্ব একটি প্যাটার্ন প্রবেশ করার জন্য একটি বিকল্প থাকা উচিত যাতে এটি মেলে। এভাবে বেশ বোবা।
schlingel

47

আমি এই লাইনটি এতে যুক্ত করেছি TextView: android:autoLink="web"
নীচে একটি বিন্যাস ফাইলটিতে ব্যবহারের উদাহরণ example

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

নিম্নলিখিত যে কোনও অ্যান্ড্রয়েড অ্যাপের মধ্যে টেক্সট এবং হাইপারলিঙ্কের সংমিশ্রণ খুঁজছেন তাদের জন্য কাজ করা উচিত।

ইন 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"ব্যবহার করার দরকার নেই।

আমি আশা করি আপনি এটি সহায়ক পাবেন।


এটি ভালভাবে কাজ করে, তবে আপনি যখন ওয়েব থেকে ফিরে টিপুন তখনই ব্রাউজারটি বন্ধ করুন, তবে অ্যাপটিতে ফিরে আসবে না।
জাচুম্বেলেচাও মন্টেকিলায়

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

অবশেষে আমার জন্য এটি কাজ করেছিল। বৈধ এইচটিএমএল এবং ব্যবহার না android:autoLink=?করা গুরুত্বপূর্ণ!
নিল সানচে

Xamarin, শব্দ শো-এর জন্য কিন্তু আন্ডারলাইন করা হয় না এবং উপরে এবং না এই পরামিতি ব্যবহার ক্লিক করা যাবে না: স্বতঃলিঙ্কের, linksClickable
maxweber

জামারিন সেগুলির জন্য এবং পাঠ্য নির্ধারণ বা পাঠ্য ফর্ম্যাট সেট করার জন্যও শব্দটি আসে তবে এটি ক্লিকযোগ্য বা নীল / আন্ডারলাইন হয় না। অটো লিঙ্ক অপসারণও ব্যর্থ। কেবলমাত্র লিঙ্কগুলি অপসারণ ক্লিকযোগ্যও ব্যর্থ হয়। উভয় অপসারণ ব্যর্থ হয়।
ম্যাক্সওয়েবার

হ্যালোওয়ার্ল্ড.টেক্সট ফর্ম্যাট = Html.FromHtml (লিংক URL); এগুলি ছাড়া এবং ব্যর্থও হয়। (লিঙ্কযুক্ত নয়, নীল নয়, ক্লিক করা যাবে না)
ম্যাক্সওয়েবার

25

এক্সএমএলে পাঠ্য দৃশ্যে এটিকে যুক্ত করতে কেবল আপনার কী দরকার

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

24

আমার পক্ষে সবচেয়ে সহজ কাজটি হল লিংকাইফাই ব্যবহার করা

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

এবং এটি স্বয়ংক্রিয়ভাবে পাঠ্যদর্শনটির পাঠ্য থেকে ওয়েব ইউআরএলগুলি সনাক্ত করবে।


সত্য, তবে তারা ক্লিকযোগ্য হবে না।
ফ্র্যাক্টালবোজ

লিঙ্কগুলি ক্লিকযোগ্য।
অক্টাভিয়ান আয়নেল

19

রিচার্ড, পরের বার, আপনার পরিবর্তে 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());লিঙ্কটি ক্লিকযোগ্যযোগ্য করার জন্য আপনার এই কোডটি ( ) ব্যবহার করার দরকার নেই ।

এছাড়াও, এখানে সত্য: যতদিন আপনি সেট স্বতঃলিঙ্কের এবং linksClickable এ এই অ্যাড করতে ভুলবেন না String.xml ফাইল যাতে যোগ্য লিংক কাজ করবে।

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

3
আমার জন্য কাজ করে না। লিঙ্কটি সত্যই ক্লিকযোগ্য, তবে পুরো স্ট্রিং প্রদর্শিত হবে, কেবল "গুগল" নয়। আসলে, এখানে উত্তর বা এর সংমিশ্রণের কোনওটি এখনও পর্যন্ত কাজ করে না।
ভায়োলেট জিরাফ

আপনার ডিভাইস বা এমুলেটর ইন্টারনেটটি সক্ষম এবং এটি চালু করেছে (ওয়াইফাই) বা ল্যান সংযুক্ত রয়েছে, @ ভায়োলেট জিরাফ?
ডেভিড ডিমালান্টা

এটাই. আমি কখনই কেবল এক্সএমএল বৈশিষ্ট্য ব্যবহার করে লিঙ্কগুলিকে ক্লিকযোগ্য করে তুলতে পারি নি, তার জন্য জাভা কোডটি অবলম্বন করতে হয়েছিল। যা কোন বড় ব্যাপার নয়, তবে সুন্দর নয়।
ভায়োলেট জিরাফ

18

লিঙ্কাইফাই ব্যবহার করে : লিঙ্কাইফাই একটি টুকরো টেক্সট এবং একটি নিয়মিত এক্সপ্রেশন নিন এবং পাঠ্যের সমস্ত রেজেক্স মিলগুলি ক্লিকযোগ্যযোগ্য লিঙ্কগুলিতে পরিণত করে

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

ভুলে যাবেন না

import android.widget.TextView;

16

ফোন এবং ইউআরএলটিকে পাঠ্য ভিউ থেকে বাছাইযোগ্য করে তোলার জন্য খুব এক লাইনের অ্যান্ড্রয়েড কোডটি স্ট্রিং এবং ডেটা কী তা বিবেচনা করে না। এর জন্য আপনার কোনও 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
এটি কাজ করবে, তবে মনে রাখবেন অ্যাপ্লিকেশনটির এই ক্লিকযোগ্য টেক্সটভিউয়ের বাইরে ইন্টারনেটের প্রয়োজনের প্রয়োজন নেই। সম্ভবত এই ক্ষেত্রে ওভারকিল
জোস_জিডি

2
এটা কি সত্যিই প্রশ্নের সাথে সম্পর্কিত?
দর্পণ

2
এটি প্রশ্নের সাথে প্রাসঙ্গিক ছিল না।
আফগলস্তাদ

1
এটি কখনও ব্যর্থ হবে না!
স্কাইনেট

আমি এই পদ্ধতিটি পছন্দ করি কারণ এটি আমাদের পুরো URL টির পরিবর্তে কেবল অ্যাঙ্কর পাঠ্য শো করতে দেয়। অ্যাঙ্কর পাঠ্যটি স্টাইলযুক্তও করা যেতে পারে যেমন রঙিন সবুজ এবং আন্ডারলাইন।
হারিয়েছে শিশু

10

আপনার কেবল এটির দরকার:

android:autoLink="web"

টেক্সটভিউতে এই লাইনটি সন্নিবেশ করুন, এটি ওয়েবের উল্লেখের সাথে ক্লিকযোগ্য হতে পারে। ইউআরএল ঠিকানা এই টেক্সটভিউয়ের পাঠ্য হিসাবে সেট করা আছে।

উদাহরণ:

 <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.comhref ট্যাগ ব্যতীত আর কোনও দিন ক্লিকযোগ্য হবে না কারণ আপনার এক্সএমএলে অটলিংক থাকতে পারে না।

আমি যে সন্ধান পেয়েছি তার প্রত্যেকটিতে ক্লিক করার একমাত্র সম্পূর্ণ সমাধানটি হ'ল:

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"; এটি ডিফল্টরূপে সত্য।


আমার পক্ষে এটি ছাড়াই কাজ হয়েছে, গৃহীত উত্তরটি ঠিক কাজ করেছে @ কেলি আপনি যে অ্যান্ড্রয়েড সংস্করণ এবং ডিভাইসটি পেয়েছেন তা আপনি বলতে পারেন?
অখিল বাবা

জন্য কাজ করে না myapp://স্কিম (গভীর লিঙ্ক করার জন্য)।
কুলমাইন্ড

7

আমি টেক্সটভিউতে (কোড অনুসারে) ক্লিকযোগ্য এবং দৃশ্যমান লিঙ্কগুলিকে এভাবে সমাধান করেছি is

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

তবে আমি পাঠ্যটি দেখতে চাই এবং পাঠ্যটি ক্লিক করার সময় এটি লিঙ্কে পুনর্নির্দেশ করা (ব্রাউজার দ্বারা খোলা)? এই সমাধান যে সমাধান করে না, তাই না?
ডুক ট্রান

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>

তারপরে কোডে আপনার স্ট্রিংটি পেতে এবং এটি এইচটিএমএল হিসাবে নির্ধারণ এবং একটি লিঙ্ক আন্দোলনের পদ্ধতি সেট করতে হবে:

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
টেক্সটভিউয়ের লিঙ্কগুলি স্ট্রিংয়ের অন্যান্য পাঠ্যের চেয়ে আলাদা রঙ, তাই আমি মনে করি তারা লিঙ্ক হিসাবে স্বীকৃত হচ্ছে। তারা কেবল ক্লিকযোগ্য নয় :-(
রিচার্ড

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

যদি এক্সএমএল ভিত্তিক টেক্সটভিউ ব্যবহার করে থাকেন তবে আপনার প্রয়োজনের জন্য আপনার কেবল দুটি জিনিস করা দরকার:

  1. আপনার লিঙ্কটি স্ট্রিংয়ে সনাক্ত করুন, যেমন "এটি আমার ওয়েবপেজ"। আপনি এটি এক্সএমএল বা কোডে যুক্ত করতে পারেন।

  2. টেক্সটভিউ থাকা এক্সএমএলে এগুলি যুক্ত করুন:


android:linksClickable="true"

android:autoLink="web"

4

আপনার স্ট্রিং রিসোর্সে সিডিএটিএ যুক্ত করুন

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

আপনি যে সমস্ত সংস্থানগুলি পরিচালনা করে এমন অ্যাপ্লিকেশনগুলিতে ইন্টেন্টটি পাস করার সাথে সাথে কোনও অনুমতিের প্রয়োজন নেই, (আই ব্রাউজার)।

এটিই আমার পক্ষে কাজ করেছিল। শুভকামনা।


আপনি ক্লিকযোগ্য এমন কোনও লিঙ্ক তৈরি করছেন না, আপনি কেবল পুরো টেক্সটভিউকে ক্লিকযোগ্যযোগ্য রাখছেন ... এটি প্রশ্ন নয়।
ক্লাজিয়ের

সম্মত, কিন্তু কখনও কখনও একটি কাজ যে কাজ করে, একই জিনিস। স্পষ্টতই 5 বছর পরে সর্বাধিক জনপ্রিয় উত্তরটি লেখার পরে, এটি এখনও একটি সমস্যা ছিল এবং এটি 6 মাস ছিল আমার একই সমস্যা ছিল, তবে এটি একটি ভিন্ন তবে কার্যক্ষম সমাধান দিয়ে শেষ হয়েছিল।
onaclov2000

2

গেটস্ট্রিং (আর। স্ট্রিং.উইভেসি) এর পরিবর্তে গেটটেক্সট (আর। স্ট্রিং.উইভাসিও) ব্যবহার করতে হবে তা বের করার জন্য কেবল এত সময় নষ্ট করা হয়েছে ...

যাইহোক, এখানে আমি কীভাবে আমার কাজ করতে পেলাম। একই পাঠ্য দর্শনটিতে একাধিক হাইপারলিংক সহ।

    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>

এটি আরও অনেকগুলি সোজা-এগিয়ে এবং সহজেই ব্যবহারযোগ্য। এর কারণে ডায়নামিকভাবে যুক্ত টেক্সটভিউতে কাস্টম পাঠ্যের সাথে আমার একাধিক লিঙ্ক রয়েছে। এটির পক্ষে সর্বাধিক উন্নতি প্রয়োজন। স্প্যানড স্ট্রিং, কাস্টম টেক্সটভিউ এবং এইচটিএমএলকম্প্যাট.ফর্মএইচটিএমএল পদ্ধতিতে আমার মাথা ভেঙে ফেলা হয়েছে। আপনাকে অনেক ধন্যবাদ @ luca992।
পার্থ প্যাটেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.