رشته ها و استایل دادن به اونها در اندروید

اولین و معروف‌ترین کلاس String هست، این کلاس تغییر ناپذیر هستش یعنی هر بار که مقدارش رو تغییر بدید یک شی جدید در از این کلاس ساخته میشه. در این نوع از رشته‌ها شما هیچ تغییری در استایل نمی‌تونین ایجاد کنین.

کلاس بعدی StringBuilder‌ هستش، این کلاس قابلیت تغییر رو داره و با هربار تغییر اون یک شی جدید ساخته نمیشه، اما باز هم در این نوع از رشته‌ها شما هیچ تغییری در استایل نمی‌تونید بدید.

کلاس بعدی SpannedString هست، این کلاس مانند String تغییر ناپذیر است، اما بر خلاف اون استایل میگیره اما استایل این نوع از رشته‌ها نیز قابل تغییر نیست، فکر نکنم لازم باشه بگم با هر تغییری در این شی یک نوع جدید از اون ساخته میشود.

کلاس بعدی SpannableString هست، این کلاس تمام خصوصیاتش مانند کلاس SpannedString هست با این تفاوت که استایل رشته قابل تغییر است. کاربرد این کلاس در زمانی هستش که شما نیازی به تغییر متن ندارید اما نیاز دارید استایل متن را تغییر دهید.

کلاس بعدی SpannableStringBuilder نام داره و از نامش کاملا مشخصه که در این کلاس هم متن و هم استایل قایل تغییر هستش، این کلاس زمانی کاربرد داره که شما نیاز دارید که متن و استایل رو تغییر بدید.

یه نکته هم راجه به CharSequence میخوام بهتون بگم. CharSequence یک اینترفیس هستش که تمام کلاس‌های بالا اون رو implement کردن. شما میتونید با استفاده از این شی طیف وسیعی رو پوشش بدید و کدهایی با انعطاف بالا بنویسید. شما میتونید اون رو به هر نوع دیگه‌ای که لازم دارید downcast کنید و از اون استفاده کنید.




همه اینها رو گفتم تا یکم براتون از SpannableString بگم، با استفاده از متد setSpan این کلاس میتونید هر استایلی که میخواین به متنتون بدین. این متد چهارتا ورودی میگیره، ورودی اول اون ستایل هست و ورودی های بعدی به ترتیب اندیس شروع، اندیس پایان و فلگ است.

یکی از مهمترین پارامتر های setSpan پارامتر فلگ هستش، این پارامتر در SpannableStringBuilder استفاده میشه و مشخص می‌کنه که استایل چه عکس‌العملی در زمان اضافه کردن متن در اندیس شروع و پایان داشته باشه.

یکی دیگر از راههای استایل دادن به متون استفاده از کلاس Html‌ هست، با استفاده از متد fromHtml می‌تونید کد html خودتون رو تبدیل به یک شئ از نوع Spanned کنید. البته باید بگم که محدودیت‌های این کار خیلی زیاده و خیلی از دستورات html معتبر نیست. اما در جاهای محدود کاربرد دارد؛ مثلا زمانی که یک متن با استایل خیلی ساده رو می‌خواید از سرویس‌دهنده بگیرید و نمایش دهید.

سورس این پروژه در آدرس زیر در دسترس شما خواهد بود.

https://github.com/Darvishiyan/Strings