جواد زبیدی زاده 570 ارسال شده در 17 شهریور، ۱۳۹۶ اشتراک گذاری ارسال شده در 17 شهریور، ۱۳۹۶ سلام دوستان اینجام میخوام آموزشی بدم که میتونه خیلی کاربرد داشته باشه شاید در برخی مواقعه دیده باشید که برخی از برنامه ها همراه با متن معمولی لینک قرار میدن اینجا میخوام آموزش بدم که چطور این کار رو میشه انجام داد. برای این کار ما از کتاب خانه Linkify استفاده میکنیم میتونید مستندات کاملش رو از ادرس زیر مطالعه کنید. https://developer.android.com/reference/android/text/util/Linkify.html خوب ما اول باید یک pattern ایجادکنیم کار این pattern چی هستش ما میایم متنی رو که میخوایم لینک دار کنیم رو به این pattern میدیم Pattern pattern= Pattern.compile("جواد زبیدی زاده"); خب حالا اگر ما بخوایم لینک به وسیله scheme خود برنامه خودمون باز بشه یا به وسیله هر برنامه دیگه میاد متنی رو که داخل pattern نوشتیم رو ارسال میکنه اگر بخوایم متن دلخواهی بفرستیم میاید از خاصیت TransformFilter استفاده میکنیم به مثل زیر توجه کنید مثال : اگر عنوان لینک نام و نام خانوادگی کاربر باشه (جواد زبیدی زاده) و بخوایم نام کاربری رو بفرستیم (Javadzobeidi) میایم به صورت زیر انجام میدیم Linkify.TransformFilter username = new Linkify.TransformFilter() { @Override public String transformUrl(Matcher match, String url) { return "javadzobeidi"; } }; حالا باید ویوی که متن توی اون هستش رو هم تعریف کنیم که اینجا Textview هستش TextView event_message = (TextView)itemView.findViewById(R.id.event_message); event_message.setText("جواد زبیدی زاده یک پیغامی برای شما ارسال کرده است"); خب حالا وقتش شده لینک رو ایجاد کنیم گفتیم از کلاس Linkify استفاده میکنیم Linkify.addLinks(event_message,pattern,"myScheme://?username=",null,username); توی کد بالا اگر توجه کنید من یک scheme ایجاد کردم myScheme://?username= این scheme هستش که من با اون اطلاعات رو میگیرم خب اگر تا اینجا درست انجام داده باشید لینک همراه با متن نمایش داده میشه ولی خب یک زیر خط همراه لینک به نمایش در میاد که بهش میگن Underlines برای حذف این زیر خط باید کلاس و تابع زیر رو بنویسید /** * Delete Under Line From Link in Text View Class */ public static class URLSpanNoUnderline extends URLSpan { public URLSpanNoUnderline(String p_Url) { super(p_Url); } public void updateDrawState(TextPaint p_DrawState) { super.updateDrawState(p_DrawState); p_DrawState.setUnderlineText(false); } } /** * Delete Under Line From Link in Text View method * Enterd Text View Get text */ public static void removeUnderlines(Spannable p_Text) { URLSpan[] spans = p_Text.getSpans(0, p_Text.length(), URLSpan.class); for(URLSpan span:spans) { int start = p_Text.getSpanStart(span); int end = p_Text.getSpanEnd(span); p_Text.removeSpan(span); span = new URLSpanNoUnderline(span.getURL()); p_Text.setSpan(span, start, end, 0); } } و کد زیر رو کنار کد ایجاد لینک قرار بدید // Make sure the TextView was instantiated correctly if(event_message != null) { removeUnderlines((Spannable)event_message.getText()); } و من الله التوفیق لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.