PDA

View Full Version : نمایش متن عربی و تغییر رنگ اعراب



sh.mahdavi
شنبه 06 آذر 1395, 13:21 عصر
سلام و خسته نباشید

برای نمایش متن های عربی در textView ها باید چیکار کنم؟
در ضمن میخوام رنگ اعراب با رنگ نوشته ها فرق داشته باشه!

ممنون

[younes]
شنبه 06 آذر 1395, 23:22 عصر
سادست هر حرف با یک کد به یک نویسه نظیر میشود ..... فقط کافی است کدهایی که به اعراب نظیر شده اند را شناسایی کنید و در حین اجرا رنگی کنید.
http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-chapter08

[younes]
شنبه 06 آذر 1395, 23:23 عصر
البته نمی دونم در
textView میشه هر کاراکتر رو به تنهایی رنگش رو عوض کرد یا نه......

abbasalim
یک شنبه 07 آذر 1395, 09:39 صبح
میشه با کدهای html یه کارایی کرد.
این رو هم ببینید:
ترفند‌: جستجو در مطالب عربی در اندروید (بروز شد)

(http://www.esfandune.ir/%d8%aa%d8%b1%d9%81%d9%86%d8%af%e2%80%8c-%d8%ac%d8%b3%d8%aa%d8%ac%d9%88-%d8%af%d8%b1-%d9%85%d8%b7%d8%a7%d9%84%d8%a8-%d8%b9%d8%b1%d8%a8%db%8c-%d8%af%d8%b1-%d8%a7%d9%86%d8%af%d8%b1%d9%88%db%8c%d8%af/)

بروزرسانی:


یه نکته دیگه اینه که مثلا کاربر کلمه "ولد" رو سرچ میکنه و ما میخوایم در تکست ویمون اون رو هایلایت کنیم در صورتیکه جمله ما اعراب داره :
"ى لَیْلَهِ تَمامِهِ وَکَمالِهِ فَما کانَتْ اِلاّ ساعَهً وَاِذا بِوَلَدِىَ الْحَسَنِ قَدْ". پیدا کردن این کلمه به نظر غیرممکن میاد چون اعراب در شمارش کاراکترها به حساب میان و دردسر میشن ولی راه حل اینقدرها هم سخت نیست:
txt همون تکست ویو ما هست.
String INPUT ="ى لَیْلَهِ تَمامِهِ وَکَمالِهِ فَما بِوَلَدِىَ کانَتْ اِلاّ ساعَهً وَاِذا بِوَلَدِىَ الْحَسَنِ قَدْ" ;
Pattern p = Pattern.compile("و[\\u064B-\\u064F\\u0650-\\u0656]*ل[\\u064B-\\u064F\\u0650-\\u0656]*د");
Matcher m = p.matcher(INPUT); // get a matcher object
int count = 0;

Spannable wordtoSpan = new SpannableString(INPUT);
while(m.find()) {
count++;
System.out.println("Match number "+count);
System.out.println("start(): "+m.start());
System.out.println("end(): "+m.end());
wordtoSpan.setSpan(new BackgroundColorSpan(Color.BLUE), m.start(), m.end(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}

txt.setText(wordtoSpan);
اینجا ما دستی کلمه ولد رو گذاشتیم. ولی شما باید یه حلقه بزارید و به ازای هر کاراکتر از کلمه تون یه

[\\u064B-\\u064F\\u0650-\\u0656]*به پترنتون اضافه کنید .




(http://www.esfandune.ir/%d8%aa%d8%b1%d9%81%d9%86%d8%af%e2%80%8c-%d8%ac%d8%b3%d8%aa%d8%ac%d9%88-%d8%af%d8%b1-%d9%85%d8%b7%d8%a7%d9%84%d8%a8-%d8%b9%d8%b1%d8%a8%db%8c-%d8%af%d8%b1-%d8%a7%d9%86%d8%af%d8%b1%d9%88%db%8c%d8%af/)

sabapp
یک شنبه 07 آذر 1395, 14:08 عصر
با تشکر از شما اما این چیزی که جواب دادید رنگی کردن حروف و اعراب هست، اما چیزی که دوستمون میخواستند رنگی کردن اعراب به تنهایی هست.
کدی گه گذاشتید را اگه تست کنید می بینید که ظاهرا برای اعراب به تنهایی این روش جواب نمیده و اعراب را حذف میکنه

sh.mahdavi
یک شنبه 07 آذر 1395, 17:46 عصر
متشکر و ممنون از جواب های شما

شما فرض کن بخوای قران یا کتابهای دیگر رو با اندروید بنویسی و بخوای متون عربی رو نشون بدی باید چیکار کرد؟
مهم همون اعراب گذاری و رنگی بودن اونا هست

ممنون

sh.mahdavi
چهارشنبه 10 آذر 1395, 10:49 صبح
از دوستان کسی انجام نداده؟

tux-world
چهارشنبه 08 دی 1395, 08:40 صبح
من این کدم که درست کار میکنه رو براتون میزارم.




SpannableString text_span_black = new SpannableString(reshap_txt);


for(int i=0;i<text_span_black.length();i++)
{
String ch=text_span_black.charAt(i)+"";
if(ch.equals("ِ")||ch.equals("َ")||ch.equals("ُ")||ch.equals("ّ")||ch.equals("ً")||ch.equals("ٌ")||ch.equals("ٍ")||ch.equals("ْ"))
{
text_span_black.setSpan(new ForegroundColorSpan(Color.RED), i, i+1, 33);
}
else if(need_black==true)
{
text_span_black.setSpan(new ForegroundColorSpan(Color.BLACK), i, i+1, 33);
}
}


اینجا گذاشتم (http://paste.debian.net/905131/)

hamedg1366
پنج شنبه 09 دی 1395, 15:27 عصر
من این کدم که درست کار میکنه رو براتون میزارم.




SpannableString text_span_black = new SpannableString(reshap_txt);


for(int i=0;i<text_span_black.length();i++)
{
String ch=text_span_black.charAt(i)+"";
if(ch.equals("ِ")||ch.equals("َ")||ch.equals("ُ")||ch.equals("ّ")||ch.equals("ً")||ch.equals("ٌ")||ch.equals("ٍ")||ch.equals("ْ"))
{
text_span_black.setSpan(new ForegroundColorSpan(Color.RED), i, i+1, 33);
}
else if(need_black==true)
{
text_span_black.setSpan(new ForegroundColorSpan(Color.BLACK), i, i+1, 33);
}
}


اینجا گذاشتم (http://paste.debian.net/905131/)






من کدهای شما رو امتحان کردم متاسفانه کار نکرد ؛ بلکه اعراب را حذف و حروف رو بصورت جدا از هم نشون داد.

دقیقا کد شما رو کپی کردم فقط else رو بدون شرط قرار دادم