View Full Version : نشان دادن اسمايلي ها در تكست ويو
Amin-rz
شنبه 26 مهر 1393, 21:05 عصر
دوستان كسي به نتيجه اي نرسيد كه چطور علائمي مثل (: تو تكست ويو تبديل به شكلك بشن؟
تو تاپيك "اين هم كد" يكي هست كه مال اكليپس نيست يا حداقل من نمي دونم چكارش كنم.
shahin bahari
شنبه 26 مهر 1393, 22:05 عصر
spanable String میتونه این کارو کنه. Html هم می تونه. به نظر من Html ساده تر هست.
من قبلا یه چیز شبیه به این رو نوشته بودم. اول باید علائمی که نیازی رو توی متن پیدا کنید و اون رو مثلا با <img src="15.png" /> جایگزین کنید. بعد کل متن رو به همراه یه image Getter که خودتون برای لود کردن تصاویر مورد نظر نوشتید به تکست ویو میدید و داستان حل میشه.
Amin-rz
شنبه 26 مهر 1393, 23:36 عصر
ميشه يه نمونه كد بديد يا يه لينك؟
shahin bahari
یک شنبه 27 مهر 1393, 21:02 عصر
نمونه کد ندارم. اون کدی هم که نوشتم قسمتی از یه پروژه بود و توی اون ویو جند تا کار رو با هم ترکیب کردم برای همین جدا کردن این قسمتش یه خورده کار می بره.
با جستجوی عبارت نمایش تصویر در تکست ویو اندروید کلی مثال میاد مثلا:
http://stackoverflow.com/questions/2865452/is-it-possible-to-display-inline-images-from-html-in-an-android-textview
Amin-rz
پنج شنبه 01 آبان 1393, 11:51 صبح
هر کاری می کنم نمیشه.
از اینم استفاده کردم نشد.
String myText = "<p><b>First, </b><br/>" +
"Please press the <img src =\"happy.png\"> button beside the to insert a new event.</p>" +
"<p><b>Second,</b><br/>" +
"Please insert the details of the event.</p>"+
"<p>The icon of the is show the level of the event.<br/>" +
"eg: <img src = \'tu1.png\' > is easier to do.</p></td>";
Spanned sp = Html.fromHtml(myText);
tvinfo.setText(sp);
tvinfo.setTypeface(tf);
shahin bahari
پنج شنبه 01 آبان 1393, 17:23 عصر
مشکلتون الان این قضیه هست که هیچ image getter بهش ندادید که بفهمه عکس ها رو از کجا لود کنه.
private class ImageGetter implements Html.ImageGetter {
public Drawable getDrawable(String source) {
int id;
if (source.equals("stack.jpg")) {
id = R.drawable.stack;
}
else if (source.equals("overflow.jpg")) {
id = R.drawable.overflow;
}
else {
return null;
}
Drawable d = getResources().getDrawable(id);
d.setBounds(0,0,d.getIntrinsicWidth(),d.getIntrins icHeight());
return d;
}
};
بعد به جای متد Html.fromHtml("str"); از Html.fromHtml("str",your image getter,null); استفاده کنید.
تواون لینکی که گزاشته بودم دقیقا همین مشکل رو پرسیده بودن!
Amin-rz
شنبه 01 آذر 1393, 16:32 عصر
دوستان آخرش من نتونستم اینو اوکی کنم.
میشه یه نفر یه پروژه ساده به من بده؟
tux-world
شنبه 01 آذر 1393, 20:32 عصر
نیازی به این کار نیست یادمه یه کتابخونه ۳۰ کیلوبایتی براش نوشته بودن که همه این کارا رو انجام میداد. سرچ کنید پیداش میکنید. نتونستید بگید تو فایلام بگردم
Amin-rz
شنبه 01 آذر 1393, 22:20 عصر
والله چند وقته دارم ميگردم.حتي سايتهاي خارجي.
به جايي نرسيدم.
اگه لطف كني اين كتابخونه رو برام بذاري ممنون ميشم.
و يه خط كه چطور ميشه ازش استفاده كرد.
Amin-rz
دوشنبه 10 آذر 1393, 14:04 عصر
.....up.....
tux-world
دوشنبه 10 آذر 1393, 14:48 عصر
تو تاپیک معرفی نمونه کده (http://barnamenevis.org/showthread.php?401729-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D9%88%DA%86%DA%A9-%D9%88-%D9%85%D9%81%D9%8A%D8%AF-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF)ا کتابخونش هست. نمیدونم کودوم صفحه بود.
Amin-rz
دوشنبه 10 آذر 1393, 15:29 عصر
اون مال gradle هست بلد نيستم ازش استفاده كنم.
Amin-rz
سه شنبه 11 آذر 1393, 13:18 عصر
بالاخره تونستم این کد رو پیدا کنم.ولی اسمایلی های متحرک رو نشون نمیده.چکار میشه کرد ؟
string = string.replace(":)","<img src=\"wavesmile\">") ;
tvmatn.setText(Html.fromHtml(string), new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
int resourceId = getResources().getIdentifier(source, "drawable",getPackageName());
Drawable drawable = getResources().getDrawable(resourceId);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
return drawable;
}
}, null));
abbasalim
سه شنبه 11 آذر 1393, 19:51 عصر
اون مال gradle هست بلد نيستم ازش استفاده كنم.
سلام
مهم نیست شما فایل های اصلیش رو داخل پروژتون کپی کنید
Amin-rz
سه شنبه 11 آذر 1393, 20:48 عصر
الان این کد بالا رو چطور تغییر بدم که تصویر متحرک هم نمایش بده ؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.