दिलचस्प पोस्ट
एएसपी.एन.टी. एमवीसी वेबसाइट की ओर से सेवा सेवा की नई सेवा कैसे एक ArrayList सॉर्ट करने के लिए? पायथन: HTTP स्ट्रीमिंग के साथ एक बड़ी फ़ाइल पोस्ट करें कार्यक्रम के पीछे से कोड के रूप में करीब एएसपीएक्स पेज सी में एक स्ट्रिंग चर में नामित फ़ंक्शन कॉल करें सी # में ASCII स्ट्रिंग का मान कैसे प्राप्त करें डिवेल में केंद्र की विशाल छवि सूचियों को अलग कैसे करें? डिव पर टैब अनुक्रमणिका स्विफ्ट पर URL से छवि को लोड करना / डाउनलोड करना इसी तरह की छवियों को खोजने के लिए एल्गोरिथम पायथन से जावा कॉलिंग पीएचपी रीजॉक्सपी पैटर्न में अतिरिक्त बैकस्लैश आवश्यक है कैसे जावास्क्रिप्ट में नेस्टेड सरणी समतल करने के लिए? मेरा regex बहुत अधिक मिलान कर रहा है मैं इसे कैसे रोकूं?

मैं स्ट्रिंग संसाधन से अलर्ट डीआलाओग में क्लिक करने योग्य हाइपरलिंक्स कैसे प्राप्त करूं?

मैं जो पूरा करने की कोशिश कर रहा हूं, वह एक AlertDialog द्वारा प्रदर्शित संदेश पाठ में क्लिक करने योग्य हाइपरलिंक्स है। जबकि AlertDialog कार्यान्वयन खुशी से किसी भी हाइपरलिंक्स को रेखांकित करता है और रंग देता है ( <a href="..."> AlertDialog पारित स्ट्रिंग संसाधन में परिभाषित किया गया है)। लिंक्स लिंक करने योग्य नहीं बनते हैं

मैं वर्तमान में उपयोग कर रहा हूँ कोड इस तरह दिखता है:

 new AlertDialog.Builder(MainActivity.this).setTitle( R.string.Title_About).setMessage( getResources().getText(R.string.about)) .setPositiveButton(android.R.string.ok, null) .setIcon(R.drawable.icon).show(); 

मैं सिर्फ एक टेक्स्ट स्निपेट प्रदर्शित करने के लिए एक WebView का उपयोग करने से बचना चाहता हूं।

वेब के समाधान से एकत्रित समाधान "मैं स्ट्रिंग संसाधन से अलर्ट डीआलाओग में क्लिक करने योग्य हाइपरलिंक्स कैसे प्राप्त करूं?"

यदि आप केवल कुछ पाठ और यूआरएल [या] को अपने संवाद में दिखा रहे हैं तो शायद समाधान सरल है

 public static class MyOtherAlertDialog { public static AlertDialog create(Context context) { final TextView message = new TextView(context); // ie: R.string.dialog_message => // "Test this dialog following the link to dtmilano.blogspot.com" final SpannableString s = new SpannableString(context.getText(R.string.dialog_message)); Linkify.addLinks(s, Linkify.WEB_URLS); message.setText(s); message.setMovementMethod(LinkMovementMethod.getInstance()); return new AlertDialog.Builder(context) .setTitle(R.string.dialog_title) .setCancelable(true) .setIcon(android.R.drawable.ic_dialog_info) .setPositiveButton(R.string.dialog_action_dismiss, null) .setView(message) .create(); } } 

जैसा कि यहां दिखाया गया है http://picasaweb.google.com/lh/photo/up29wTQeK_zuz-LLvre9wQ?feat=directlink

क्लिक करने योग्य लिंक के साथ चेतावनी संवाद

मुझे वास्तव में वर्तमान में सबसे लोकप्रिय जवाब पसंद नहीं था क्योंकि यह महत्वपूर्ण रूप से संवाद में संदेश के प्रारूपण को बदलता है।

यहां एक ऐसा समाधान है जो अन्यथा पाठ स्टाइल बदलकर अपने संवाद पाठ को लिंक करेगा:

  // Linkify the message final SpannableString s = new SpannableString(msg); Linkify.addLinks(s, Linkify.ALL); final AlertDialog d = new AlertDialog.Builder(activity) .setPositiveButton(android.R.string.ok, null) .setIcon(R.drawable.icon) .setMessage( s ) .create(); d.show(); // Make the textview clickable. Must be called after show() ((TextView)d.findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance()); 

इसे <a href> टैग्स को भी हाइलाइट करने के लिए करना चाहिए। कृपया ध्यान दें कि मैंने एएमएमबी के कोड में कुछ लाइनें जोड़े हैं। तो उसको श्रेय दें

 final AlertDialog d = new AlertDialog.Builder(this) .setPositiveButton(android.R.string.ok, null) .setIcon(R.drawable.icon) .setMessage(Html.fromHtml("<a href=\"http://www.google.com\">Check this link out</a>")) .create(); d.show(); // Make the textview clickable. Must be called after show() ((TextView)d.findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance()); 

दरअसल, यदि आप सभी विचारों के व्यवहार के बिना स्ट्रिंग का उपयोग करना चाहते हैं, तो सबसे तेज़ तरीका है कि संदेश पाठदृश्य को ढूंढें और इसे लिंक करें:

 d.setMessage("Insert your cool string with links and stuff here"); Linkify.addLinks((TextView) d.findViewById(android.R.id.message), Linkify.ALL); 

जेएफटीआर, यहां कुछ समय बाद मुझे लगा कि समाधान है:

 View view = View.inflate(MainActivity.this, R.layout.about, null); TextView textView = (TextView) view.findViewById(R.id.message); textView.setMovementMethod(LinkMovementMethod.getInstance()); textView.setText(R.string.Text_About); new AlertDialog.Builder(MainActivity.this).setTitle( R.string.Title_About).setView(view) .setPositiveButton(android.R.string.ok, null) .setIcon(R.drawable.icon).show(); 

एंड्रॉइड स्रोतों से एक टुकड़ा के रूप में उधार लिया गया इसी। एक्सएमएल इस तरह दिखता है:

 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scrollView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingTop="2dip" android:paddingBottom="12dip" android:paddingLeft="14dip" android:paddingRight="10dip"> <TextView android:id="@+id/message" style="?android:attr/textAppearanceMedium" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="5dip" android:linksClickable="true" /> </ScrollView> 

महत्वपूर्ण भागों लिंक सेट कर रहे हैं सच और setMovementMethod (LinkMovementMethod.getInstance ()) के लिए क्लिक करें

के बजाय …

 AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); dialogBuilder.setTitle(R.string.my_title); dialogBuilder.setMessage(R.string.my_text); 

… अब मैं इसका उपयोग करता हूं:

 AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); dialogBuilder.setTitle(R.string.my_title); TextView textView = new TextView(this); textView.setMovementMethod(LinkMovementMethod.getInstance()); textView.setText(R.string.my_text); dialogBuilder.setView(textView); 

उपरोक्त सभी उत्तर, आदि की तरह HTML टैग को नहीं हटाएगा यदि दिए गए स्ट्रिंग में, मैं सभी टैग निकालने की कोशिश की, और यह मेरे लिए काम ठीक है

 AlertDialog.Builder builder = new AlertDialog.Builder(ctx); builder.setTitle("Title"); LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.custom_dialog, null); TextView text = (TextView) layout.findViewById(R.id.text); text.setMovementMethod(LinkMovementMethod.getInstance()); text.setText(Html.fromHtml("<b>Hello World</b> This is a test of the URL <a href=http://www.example.com> Example</a><p><b>This text is bold</b></p><p><em>This text is emphasized</em></p><p><code>This is computer output</code></p><p>This is<sub> subscript</sub> and <sup>superscript</sup></p>";)); builder.setView(layout); AlertDialog alert = builder.show(); 

और custom_dialog जैसा होगा;

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout_root" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="fill_parent" android:textColor="#FFF" /> </LinearLayout> 

उपरोक्त कोड सभी एचटीएमएल टैग को निकाल देगा और उदाहरण के लिए क्लिक करें सक्षम यूआरएल को निर्दिष्ट HTML स्वरूपण पाठ में सभी दूसरों को दिखाया जाएगा।

मैं वर्तमान उत्तर से वास्तव में संतुष्ट नहीं था दो चीजें हैं जो महत्वपूर्ण हैं जब आप एक अलर्ट डाइलोग के साथ href शैली में क्लिक करने योग्य हाइपरलिंक चाहते हैं:

  1. सेट setMessage(…) साथ देखें और नहीं के रूप में सामग्री सेट करें, क्योंकि केवल दृश्य क्लिक करने योग्य HTML सामग्री को अनुमति देता है
  2. सही आंदोलन विधि सेट करें ( setMovementMethod(…) )

यहां एक कम से कम उदाहरण है:

strings.xml

 <string name="dialogContent"> Cool Links:\n <a href="http://stackoverflow.com">Stackoverflow</a>\n <a href="http://android.stackexchange.com">Android Enthusiasts</a>\n </string> 

MyActivity.java

 … public void showCoolLinks(View view) { final TextView textView = new TextView(this); textView.setText(R.string.dialogContent); textview.setMovementMethod(LinkMovementMethod.getInstance()); // this is important to make the links clickable final AlertDialog alertDialog = new AlertDialog.Builder(this) .setPositivebutton("OK", null) .setView(textView) .create(); alertDialog.show() } … 

मैंने कई प्रश्न और उत्तर की जांच की है, लेकिन यह काम नहीं करता है मैंने ख़ुद किया था। यह MainActivity.java पर कोड स्निपेट है I

 private void skipToSplashActivity() { final TextView textView = new TextView(this); final SpannableString str = new SpannableString(this.getText(R.string.dialog_message)); textView.setText(str); textView.setMovementMethod(LinkMovementMethod.getInstance()); .... } 

इस टैग को res \ values ​​\ String.xml पर रखें

 <string name="dialog_message"><a href="http://www.nhk.or.jp/privacy/english/">NHK Policy on Protection of Personal Information</a></string> 

सरल तरीका:

 final AlertDialog dlg = new AlertDialog.Builder(this) .setTitle(R.string.title) .setMessage(R.string.message) .setNeutralButton(R.string.close_button, null) .create(); dlg.show(); // Important! android.R.id.message will be available ONLY AFTER show() ((TextView)dlg.findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance()); 

मैंने इस फ़ंक्शन के साथ आने के लिए ऊपर चर्चा की कुछ विकल्पों को मिलाया है जो मेरे लिए काम करता है परिणाम को संवाद बिल्डर सेटव्यू () विधि से पास करें

 public ScrollView LinkifyText(String message) { ScrollView svMessage = new ScrollView(this); TextView tvMessage = new TextView(this); SpannableString spanText = new SpannableString(message); Linkify.addLinks(spanText, Linkify.ALL); tvMessage.setText(spanText); tvMessage.setMovementMethod(LinkMovementMethod.getInstance()); svMessage.setPadding(14, 2, 10, 12); svMessage.addView(tvMessage); return svMessage; } 

यदि आप एक DialogFragment का उपयोग कर रहे हैं, तो इस समाधान को मदद करनी चाहिए।

 public class MyDialogFragment extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // dialog_text contains "This is a http://test.org/" String msg = getResources().getString(R.string.dialog_text); SpannableString spanMsg = new SpannableString(msg); Linkify.addLinks(spanMsg, Linkify.ALL); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(R.string.dialog_title) .setMessage(spanMsg) .setPositiveButton(R.string.ok, null); return builder.create(); } @Override public void onStart() { super.onStart(); // Make the dialog's TextView clickable ((TextView)this.getDialog().findViewById(android.R.id.message)) .setMovementMethod(LinkMovementMethod.getInstance()); } } 

मैं इसे XML संसाधन में सचेत बॉक्स को निर्दिष्ट करके और लोड कर रहा हूं। उदाहरण के बारे में about.xml देखें (ABOUT_URL आईडी देखें) जो कि चांडलर क्यूई जावा के अंत के निकट हो जाता है। जावा कोड से संबंधित भागों:

 LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = (View) inflater.inflate(R.layout.about, null); new AlertDialog.Builder(ChandlerQE.this) .setTitle(R.string.about) .setView(view)