मैं Google जैसे टेक्स्टव्यू टेक्स्ट के लिए एक लिंक बनाना चाहता हूं । इस तरह लिंक बनाने के लिए वैसे भी है। (यानी) Google शब्द पर क्लिक करते समय इसे उचित लिंक को खोलना चाहिए। किसी भी विचार का स्वागत है।
मैं Google जैसे टेक्स्टव्यू टेक्स्ट के लिए एक लिंक बनाना चाहता हूं । इस तरह लिंक बनाने के लिए वैसे भी है। (यानी) Google शब्द पर क्लिक करते समय इसे उचित लिंक को खोलना चाहिए। किसी भी विचार का स्वागत है।
जवाबों:
इस कोशिश करो, और मुझे पता है कि क्या होता है ..
जावा कोड का उपयोग करना:
TextView textView =(TextView)findViewById(R.id.textView);
textView.setClickable(true);
textView.setMovementMethod(LinkMovementMethod.getInstance());
String text = "<a href='http://www.google.com'> Google </a>";
textView.setText(Html.fromHtml(text));
एपीआई स्तर से = = 24 इसके बाद Html.fromHtml(String source)
उपयोग के बजाय पदावनत किया जाता है fromHtml(String, int)
,
textView.setText(Html.fromHtml(text, Html.FROM_HTML_MODE_COMPACT));
या अपने TextView विजेट विशेषताओं के अंदर लेआउट xml फ़ाइल में
android:autoLink="web"
android:linksClickable="true"
android:autoLink="web"
XML से निकालने की आवश्यकता है । मेरे पास दोनों थे और यह काम नहीं किया।
android:autoLink="web"
अपने TextView xml में उपयोग करें। यह स्वचालित रूप से क्लिक-सक्षम (यदि पाठ में पाया जाता है) url को परिवर्तित करना चाहिए
सभी परीक्षण किए गए और काम कर रहे 100%
समाधान: android:autoLink="web"
नीचे एक पूर्ण उदाहरण
नमूना लेआउट 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/txtLostpassword"
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" />
स्ट्रिंग में स्ट्रिंग। 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>
यह टेक्स्टव्यू की डिफ़ॉल्ट संपत्ति का उपयोग करके भी किया जा सकता है
android:autoLink="email"
नोट: - Html.fromHtml Android N में पदावनत है
आपको Android N
Android के चेक और समर्थन और उच्चतर संस्करण करने की आवश्यकता है
//Set clickable true
tagHeading.setClickable(true);
//Handlle click event
tagHeading.setMovementMethod(LinkMovementMethod.getInstance());
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
tagHeading.setText(Html.fromHtml("<a href='https://github.com/hiteshsahu'>https://github.com/hiteshsahu</a>", Html.FROM_HTML_MODE_LEGACY));
} else {
tagHeading.setText(Html.fromHtml("<a href='https://github.com/hiteshsahu'>https://github.com/hiteshsahu</a>"));
}
वैकल्पिक
आप टेक्स्ट व्यू पर ऑटोलिंक फ्लैग को प्रोग्रामेटिक रूप से जोड़ना नहीं चाहते हैं।
Android: ऑटोलिंक = "वेब"
Android: linksClickable = "true"
इस तरह आपको <a href='somelink'>
टैग जोड़ने की आवश्यकता नहीं है ।
कौन सा, एक नुकसान है आप जोड़ना चाहते हैं तो hyperlink
एक पर text
आप इसे इस तरह से नहीं कर सकते। उदाहरण के लिए आप ऐसा कुछ नहीं कर सकते: - [ hiteshsahu ] [१]
<TextView
android:id="@+id/tag_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tag_ll"
android:layout_gravity="left"
android:layout_margin="10dp"
android:autoLink="web"
android:linksClickable="true"
android:text="https://github.com/hiteshsahu"
android:textColor="@color/secondary_text" />
दोनों दृष्टिकोण से परिणाम: -
एसडीके के नवीनतम संस्करण के fromHtml
लिए पदावनत उपयोग नीचे की पंक्ति में है
String yourtext = "<a style='text-decoration:underline' href='http://www.sample.com'> Sample Website </a>";
if (Build.VERSION.SDK_INT >= 24) {
textView.setText(Html.fromHtml(yourtext, Html.FROM_HTML_MODE_LEGACY));
} else {
textView.setText(Html.fromHtml(yourtext));
}
मैंने एक टेक्स्टव्यू का निम्नलिखित विस्तार कार्य किया है।
@SuppressLint("SetTextI18n")
fun TextView.makeHyperLink(url: String) {
text = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Html.fromHtml("<a href='${url}'>${text}</a>", Html.FROM_HTML_MODE_COMPACT)
} else {
Html.fromHtml("<a href='${url}'>${text}</a>")
}
movementMethod = LinkMovementMethod.getInstance()
isClickable = true
}
और इसे इस तरह बुला रहा है
tvTos.makeHyperLink(tos_url)
आप टेक्स्ट को एक पैरामीटर के रूप में भी पास कर सकते हैं।