Skip to main content

نمایش و جمع آوری متن ها یا text value ها

Display and collect text values

در این بخش نحوه بدست آوردن متن از یک شیء Edit Text و همچنین چگونگی نمایش یک متن طولانی با استفاده از ظرف Scroll View توضیح داده شده است.

لینک کمکی (official link) – مقادیر متنی در اندروید استودیو

کار با متون در اندروید استودیو

Android SDK شامل دو تا شیء یا key controls است که امکان کار کردن با متن را به شما میدهد. شیء Text View برای نمایش متن و Edit Text برای اینکه به کاربر اجازه دهد متن وارد کند. من طریقه استفاده از این اشیاء را در این پروژه که اسم آنرا Text Values گذاشتم برای شما توضیح میدهم.

من با شیء Edit Text شروع میکنم و به شما نشان میدهم که چطور وقتی که کاربر یک دکمه یا هر شیء دیگری را روی صفحه نمایش لمس میکند از متن داخل Edit Text برای انجام هر نوع کار مورد نیاز آن استفاده میکند.

به فایل content_main.xml میروم.

همانطور که میدانید شیء Edit Text همیشه باید یک آیدی داشته باشد و درست اینجا شما این آی دی را مشاهده میکنید.

الان من آیدی این شیء را برای شفافتر شدن کدها عوض میکنم و آیدی name Text را به آن میدهم.

حالا به کدهای جاوا یعنی کلاس Main Activity میروم.

در متد on Create، چند خط کد اینجا است که در واقع مسئولیت مدیریت دکمه floating action را دربردارند. همان دکمه به شکل پاکت صورتی رنگ گوشه پایین سمت راست صفحه نمایش. وقتی کاربر این دکمه را لمس میکند، کدهای موجود در متد set OnClickListener فراخوانی میشوند.

حالا در این قسمت Snack bar فراخوانی شده، و من به شما چند لحظه آینده، میگویم که این کد چطور کار میکند.

درواقع از این کدها و کدهای دیگری اینجا استفاده میشود برای جمع آوری اطلاعاتی که کاربر در ادیت تکست تایپ میکند. همانطور که قبلاً گفتم میشود به منابع ظرف لایوت رجوع کرد و با استفاده از آیدی آن شیء یک ارتباطی بین فایل xml و جاوا ایجاد کرد

رجوع به منبع شیء

و الان هم میخواهم به منبع شیء ادیت تکست رجوع کنم.

یک نمونه از کلاس ادیت تکست از پکیج android .widget ایجاد میکنم و اسم آنرا میگذارم et. و مثل قبل از متد find ViewById استفاده میکنم و R .id.nameText را به عنوان ورودی شناسه منبع به آن میدهم.

یعنی از بین آیدی‌ها، آیدی مربوط به شیء ادیت تکست را پیدا کن.

به علاوه باید آنرا کست کنیم تا به اندروید استودیو اطمینان دهیم که نوع خروجی این تابع ادیت تکست است.

بعد باید مقدار تایپ شده داخل این شیء را بگیریم. یک string به نام entry میسازم.

این مقدار را با فراخوانی متد get Text برای شیء Edit Text بدست می‌آوریم، ولی این متد در واقع نوع بازگشتی string نیست بلکه یک شیء به اصطلاح editable است.

پس باید با فراخوانی متدی به نام to String آنرا به string تبدیل کنیم.

تنظیم پیام بعد از فشار دادن دکمه floating action

حالا می‌آیم سراغ این کد برای نمایش پیام وقتی که کاربر دکمه floating action را فشار داد.

و این متن را به You entered: تغییر میدهم و مقدار entry را اضافه میکنم.

بنابراین گرفتن متن از این شیء خیلی راحت است، البته فراموش نکنید که باید متد to String را برای شیء مورد نظر بعد از متد get Text فراخوانی کنید.

خب؛ من از این کدها اجرا میگیرم.

وقتی این برنامه روی دستگاه ظاهر شد، شیء Edit Text را لمس میکنم تا کیبورد باز شود و نامی را تایپ میکنم.

و بعد کیبورد را میبندم و دکمه floating action را فشار میدهم، میبینید که پایین صفحه نمایش پیام You entered: و بعد نامی که تایپ کردم نمایش داده میشود.

میتوانیم این کد را هر طور که میخواهیم تغییر دهیم.

نمایش متون طولانی در برنامه اندرویدی

حالا در این پروژه در فایل activity، این متن طولانی را نمایش میدهم و این متن از یک منبع string می‌آید که در فایل strings.xml تعریف شده.

آیدی مربوط به آن lorem_ipsum است و در کدهای مربوط به فایل لایوت متن مربوطه نمایش داده میشود.

ولی اگر کرسر را ببرم روی آن، آیدی مربوطه را به من نشان میدهد و اگر روی آن کلیک کنم کد درست را نمایش میدهد.

میخواهم چند تا کد جاوا اضافه کنم که در زمان شروع برنامه اجرا شوند، که این متن را برای این برنامه نمایش بدهد.

به کلاس Main Activity میروم و یکبار دیگر در متد on Create چند خط کد اضافه میکنم.

یک نمونه از کلاس String Builder ایجاد میکنم.

این کلاس از پکیج استاندارد java.lang است.

اسم آنرا builder میگذارم و بدون هیچ آرگومانی آنرا معرفی و ایجاد میکنم.

حالا یک حلقه با تکرار ده ایجاد میکنم و با هربار اجرا حلقه، مقدار متن lorem_ipsum را به String Builder اضافه میکنم.

درون حلقه builder .append را فراخوانی میکنم.

بعد برای بدست آوردن مقدار string از منابع string، متد به نام get String را فراخوانی میکنم و به عنوان آرگومان R.string.lorem_ipsum را به آن میدهم.

بعد از فراخونی get String، یک جفت خط خالی یا line feeds اضافه میکنم.

که طبق استاندارد جاوا برای اینکه برویم خط بعد، باید \n اضافه کنیم.

خب شیء builder من ده تکرار از آن string است.

حالا من رجوع میکنم به منبع Text View، چون میخواهم متن آنرا نمایش دهم.

من قبلاً آیدی long Text را درست در اینجا تنظیم کردم.

حالا یک نمونه از کلاس Text View را ایجاد میکنم و اسم آنرا tv میگذارم.

و یکبار دیگر با find ViewById منبع آنرا بدست می‌آورم و در نهایت با دادن آیدی long Text. در منابع آنرا قابل اجرا میکنم و برای اطمینان دادن از اعتبار TextView هم آنرا کست میکنم.

بعد با tv.setText متن تکست ویو را طوری تنظیم میکنم که متن آن builder.toString باشد.

حالا وقتی اکتیویتی روی صفحه نمایش ظاهر شد، آن متن برای ده بار روی صفحه نمایش ظاهر میشود، البته این متن مقدارش بیشتر از آن چیزی است که صفحه نمایش بتواند همه آنرا نشان دهد و همانطور که میبینید اگر آنرا درآگ کنم پایین، هیچ اتفاقی نمی‌افتد.

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

خب؛ من این مشکل را با یک ویو به نام Scroll View حل میکنم و در واقع تکست ویو را داخل یک اسکرول ویو قرار میدهم.

برمیگردم به کد و فایل لایوت content_main.xml را باز میکنم.

اینجا بالای Text View، یک نمونه از ظرف Scroll View را میسازم و هر دو ویژگی layout _width و layout _height را روی مقدار match _parent تنظیم میکنم که یعنی هم عرض و هم ارتفاع آن، اندازه صفحه نمایش باشد.

خب؛ حالا شیء Text View را کات میکنم و داخل اسکرول ویو آنرا پاست میکنم.

حالا مکان شیء Text View بستگی به اسکرول ویو دارد. ولی هنوز کاری را انجام ندادیم، درواقع این اسکرول ویو است که باید زیر شیء باتن قرار بگیرد.

پس تنظیمات layout_below  را برای اسکرول ویو کات و آنرا پاست میکنم.

اگر یک نگاهی به نتیجه کار در Design view بیندازیم، میبینیم که فقط یکبار آن متن lorem_ipsum را نشان داده. این به خاطر این است که آن حلقه مربوط به تکرار این متن در کد جاوا نوشته شده و Design view از آن خبر ندارد.

من یکبار دیگر برنامه را روی دستگاه اجرا میکنم.

وقتی دستگاه روی صفحه نمایش باز میشود، اگر کیبورد ظاهر شود آنرا میبندم.

و بعد باید بتوانید با درآگ کردن صفحه به پایین متن کامل را ببینید. درواقع Text View داخل اسکرول ویواست و حالا همه متن دردسترس کاربر است. خب؛ در این بخش من نحوه بدست آوردن متن از یک شیء Edit Text و همچنین چگونگی نمایش یک متن طولانی با استفاده از ظرف Scroll View را برای شما توضیح دادم.

دیدگاهتان را بنویسید

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

دوره ها
درس ها
طهاکو من
0