String : نمایش متن توسط رشته ها

به نام خدا

در آموزش طراحی رابط کاربری کار با ویجت ها از جمله TextView و Button را یاد گرفتیم. به عنوان مثال برای تعریف متن یک دکمه از ویژگی text به صورت زیر استفاده می کردیم:

android:text="Start"

در یک اپلیکیشن ساده ممکن است تعریف متون به اینصورت، ساده ترین راه باشد اما برای یک اپلیکیشن که از چندین اکتیویتی تشکیل شده و یا محتوای زیادی را شامل می شود، مطمئنا دردسرساز خواهد شد. فرض می کنیم اپلیکیشن ما شامل ۵ اکتیویتی بوده که در انتهای هرکدام دکمه ای با متن “مراجعه به وب سایت ما” قرار داده شده. در حالت عادی شما باید در هر اکتیویتی که دکمه را تعریف کرده اید، متن را هم تعیین کنید. حالا تصمیم گرفته ایم “مراجعه به وب سایت ما” را به “بازدید از وب سایت” تغییر دهیم. تنها چاره این است که تغییرات را در هر ۵ اکتیویتی روی متن اعمال کنیم که زمان بیشتری از توسعه دهنده می گیرد و علاوه بر آن احتمال وقوع اشتباه را نیز افزایش می دهد. یا بخواهیم زبان اپلیکیشن را عوض کنیم. باید تمامی دکمه ها و متن ها و تکست فیلدها را یک به یک پیدا کرده و متون و کلمات فارسی را با زبان انگلیسی جایگزین کنیم. ضمن اینکه این تکرار متن بخصوص در متن های با تعداد کاراکتر بالا باعث شلوغی کد و در نتیجه سنگینی و افزایش حجم نیز خواهد شد. روش بهینه استفاده از رشته ها (String) می باشد. برای تمرین، پروژه ای که قبلا روی آن تمرین کرده بودیم را باز می کنیم.

رشته string

مشاهده می کنید در مسیر res/values فایلی با نام strings.xml تعبیه شده که مختص تعریف رشته ها می باشد.فایل را باز می کنیم :

<resources>
    <string name="app_name">MyApp Seven</string>
</resources>

داخل تگ resources یک رشته با نام app_name و محتوای MyApp Seven تعریف شده که مربوط به نام اپلیکیشن نمایش داده در Action Bar (نوار بالای صفحه) می باشد. فایل linear.xml مربوط به جلسات قبل را باز می کنیم. می خواهیم عبارت Welcome to android-studio.ir app که با رنگ قرمز نمایش داده شده را از طریق رشته ها فراخوانی کنیم. کد این TextView به این صورت بود :

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Welcome to android-studio.ir app"
    android:layout_gravity="center"
    android:layout_marginTop="5dp"
    android:textSize="20sp"
    android:textColor="#d10000"/>

به سراغ فایل strings.xml می رویم. یک رشته جدید با نام دلخواه welcome_txt و محتوای
Welcome to android-studio.ir app اضافه کردیم :

<resources>
    <string name="app_name">MyApp Seven</string>
    <string name="welcome_txt">Welcome to android-studio.ir app</string>
</resources>

حالا نوبت به فراخوانی این رشته در مکان موردنظر است. مجدد به linear.xml رفته و ویژگی text مربوط به این TextView را به صورت زیر تغییر می دهیم :

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/welcome_txt"
    android:layout_gravity="center"
    android:layout_marginTop="5dp"
    android:textSize="20sp"
    android:textColor="#d10000"/>

فراخوانی با /string@ شروع شده و در انتها نامی که برای رشته تعریف کرده بودیم اضافه می کنیم که نیاز به نوشتن این خط به صورت کامل نبوده و تنها با تایپ چند کاراکتر اول مانند str ، لیست پیشنهادی نمایش داده می شود :

رشته string

مشاهده می کنیم که در پیش نمایش عبارتی که به صورت رشته تعریف کرده بودیم نمایش داده می شود:

رشته string

از این رشته می توانیم در هر جای دیگر که مایل بودیم استفاده کنیم و هر زمان نیاز به تغییر این متن در کل اپلیکیشن خود داشتیم، تنها با تغییر محتوای رشته در فایل strings.xml به سادگی آن را اعمال کنیم.

سوالاتی که مشمول موارد زیر باشد تایید و پاسخ داده نخواهد شد :
۱ : جزء موارد پاسخ داده شده در مطلب "مشکلات و پرسش های رایج" باشد
۲ : سوال قبلا توسط افراد در دیدگاهها مطرح و پاسخ داده شده باشد
۳ : سوال خارج از مبحث آموزشی موجود در این صفحه باشد

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

چگونه آموزش های اندروید استودیو را مطالعه کنم؟

مشکلات و پرسش های رایج

معرفی
با انتشار نسخه ۱ اندروید استودیو، گوگل، توسعه دهندگان را به مهاجرت از ایکلیپس به این محیط برنامه نویسی تشویق می کند.
با توجه به اینکه اکثر آموزشهای موجود (به خصوص آموزشهای فارسی) بر پایه محیط Eclipse هستند، تصمیم گرفتیم آموزشهای ویژه برنامه نویسی در محیط Android Studio را به زبان فارسی منتشر نماییم.
آموزشهای پایه در حال تکمیل بوده و در کنار آموزش پایه، مباحث تکمیلی به صورت رایگان منتشر خواهد شد.