دوره مجازی اندروید (جلسه 8): شروع کار با Xml و View های پایه اندروید



visibility  
mode_comment   ۱۵۷

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

مطالب مطرح شده در این جلسه عبارتند از :

  • آشنایی با ساختار Xml و کاربردهای آن
  • معرفی Relative layout
  • معرفی Image Button
  • معرفی TextView
  • معرفی Button
  • معرفی Imageview
  • معرفی Toast
  • ست کردن رویداد کلیک بر روی view های مختلف
  • معرفی استاندارد های مختلف اندازه گیری اندروید

نکته ی مهم: برای حذف نوار بالای اکتیویتی (اکشن بار)، تکه کد زیر را با تگ style با نام AppTheme جایگزین کنید:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

نکته ی مهم: دوستانی که هنگام تغییر اکتیویتی پیش فرض با مشکل زیر رو به رو می شوند:

the activity must be exported or contain an intent-filter

تکه کد زیر را باید به فایل AndroidManifest.xml اضافه نمایند.

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

به عنوان مثال می خواهیم اکتیویتی ProfileActivity را به عنوان اکتیویتی پیش فرض انتخاب کنیم، ابتدا داخل فایل AndroidManifest جستجو می کنیم، هر جا که تکه کد بالا را دیدیم آن را Cut می کنیم، سپس آن را به این شکل به تگ مربوط به ProfileActivity اضافه می کنیم:

<activity
    android:name=".view.activity.ProfileActivity"
    android:label="اطلاعات کاربری"
    android:windowSoftInputMode="stateHidden">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

این مطلب یک جلسه از آموزش برنامه نویسی اندروید می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در آموزش برنامه نویسی اندروید

comment دیدگاه کاربران
علیرضا حاجی بابایی replyپاسخ

سلام. من وقتی پروژه رو اجرا می کنم این خطاها رو میده.
چطور میشه اصلاحش کرد؟
C:\Users\ali\AndroidStudioProjects\PracticeApplication2\app\build\intermediates\res\merged\debug\layout\activity_profile.xml
Error:(34, 33) String types not allowed (at ‘background’ with value ‘null’).
Error:(44, 33) No resource found that matches the given name (at ‘layout_alignRight’ with value ‘@id/pic_change’).
Error:(45, 31) No resource found that matches the given name (at ‘layout_alignLeft’ with value ‘@id/pic_change’).
Error:(46, 27) No resource found that matches the given name (at ‘layout_above’ with value ‘@id/pic_change’).

سعید شاهینی

سلام٬ داخل فایل activity_profile چندتا خطا وجود داره. دلیلشم اینه که id تگی به اسم pic_change رو پیدا نمی کنه

Farzin Bidokhti replyپاسخ

با عرض سلام و خسته نباشی
فایل Dimens برای من در مسیر گفته شده وجود ندارد، چجوری میتونم اضافه کنم؟

سعید شاهینی

سلام، خودتون یه فایل به اسم dimens.xml در پوشه ی values ایجاد کنید.

سیدسبحان صانعی replyپاسخ

سلام آقای شاهینی خسته نباشید
در نسخه جدید اندروید استودیو گزینه dimens وجود نداره
دقیقا باید چیکار کنم؟؟؟؟؟؟؟؟؟؟

سعید شاهینی

سلام، جلسه آموزشی اندروید استودیو نسخه آپدیت خرداد ماه رو مشاهده کنید. داخل توضیح دادم. این فایل رو خودتون می تونید ایجاد کنید. اهمیتی نداره

دانیال حجاری replyپاسخ

سلام
من کد رو عینا مثل استاد زدم، ولی وقتی داخل تگ عبارت alignRight رو میزنم چیزی پیدا نمیکنه! وقتی به صورت دستی کامل مینویسم کد رو، باز هم دکمه تغییر عکس به سمت راست نمیاد و همینطور گوشه بالا سمت چپ میمونه. عکس پروفایل هم همین وضعیت رو داره و جابجا نمیشه!

سعید شاهینی

دلیلش این هست که داخل آموزش ریشه ی xml از relative layout استفاده شده ولی الان در اندروید استودیو به صورت پیش فرض constraint layout انتخاب می شه و در constraint laoyut صفتی به اسم align right وجود نداره

xvision

به نظر می رسه جواب کامل نشد !
وقتی طبق فرمایش شما “در constraint laoyut صفتی به اسم align right وجود نداره”
برای جابجا کردن باتن باید چه کاری انجام بدیم ؟!

سعید شاهینی

آموزش مربوط به کار با Constraint Layout رو مشاهده کنید.

Mohammad Amiri replyپاسخ

سلام
استاد منم مشکل دوست بالایی که فرمودند align right براشون نمیاره دارم .اموزش مربوط به Constraint Layout رفتم دیدم ولی مشکلی را حل نکرد.من میخوام طبق اموزش که دادیند مرحله به مرحله جلو برم نه که یهو از relativelayout بپرم به Constraint Layout .برای نصب sdk ها هم مشکل داشتم ایمیل زدم جواب ندادید. ساعت 9 شب تماس گرفتم فرمودید جلسه دارم .دیدم محل نمیذارید خودم رفتم دونبالش خدا شاهده حدود 40 50 گیگ چیز دانلود کردم بعد فهمیدم کلیش اضافی بوده حالا هم sdk درست شده به این مشکل برخوردم . بعد یک ماه که این اموزش خریدم هنوز یک اپ نتونستم درست کنم . واقعا انتظار نداشتم از سون لورن . فقط میتونم بگم متاسفم

سعید شاهینی

سلام، وقت بخیر، بابت تاخیر در پاسخگویی واقعا متاسفم. از این به بعد سوالات تا 2 دو روز جواب داده می شن. دلیل این موضوع این هست که داخل آموزش ریشه لایوت از نوع Relative Layout هست ولی داخل ورژن های جدید اندروید استودیو لایوت ریشه به صورت پیش فرض ConstraintLayout هست.برای اینکه بتونید طبق آموزش پیش برید و صفت هایی که توی ویدیو هست رو داشته باشید، لایوت ریشه رو RelativeLayout تغییر بدید.

Mohammad Amiri replyپاسخ

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

محمد واحدی replyپاسخ

سلام استاد خسته نباشید
چرا برای بالا بردن عکس آواتار از کد زیر استفاده کردیم؟
و از allign استفاده نکردیم؟
و بهش id همون edit avatar رو ندادیم. چون طبق ویدیو معنی اونم میشد بالای دکمه قرار گرفتن
من تست کردم ولی بالاش نیومد.

android:layout_above="@+id/edit_avatar_btn"
سعید شاهینی

اگر از گزینه align استفاده کنید، imageView تراز می شه با بالای view ولی وقتی از above استفاده کنید imageView بالای view مقصد قرار می گیره

سعید ترابی replyپاسخ

سلام استاد من وقتی یک اکتیویتی مسیازم بالای اکتیویتی یک قسمت ابی رنگ الیجاد میشه اسم پنجره اکتیویتی رو مینوسه چیمار باید بکنم؟ مصل شما خالی ساخته بشه؟

سعید شاهینی

سلام، اسم اون نوار action bar هست، برای اینکه این نوار برداشته بشه باید تکه کدی را که در توضیحات همین جلسه ۸ قرار دادم را داخل فایل styles.xml جایگزین کنید.

سعید ترابی replyپاسخ

استاد یه سوال دیگه هم دارم من لینیر لایوت رو تا میزاریم روی مچ پرنت وقتی میرم تو دیزاین نگاه میکنم و بر میگردم مینویسه
368 dp و خراب میشه

سعید شاهینی

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

سید محمد وجدانی زاده replyپاسخ

خسته نباشید
ببخشید یه مشکلی تو شبیه ساز اندروید استدیو دارم نمی دونم چیکارش کنم لطفا راهنمایی کنید
ارور :
android emulator closed unexprctedly
process finished with exit code-1073741819(0xC0000005)

سعید شاهینی

سلام، لپتاپتون از نوع gaming هست؟

سید محمد وجدانی زاده

بله

Reza Ahmadzadeh

سلام
شما میتونید از موبایلتون به عنوان دستگاه مجازی استفاده کنی

سید محمد وجدانی زاده replyپاسخ

استاد ببخشید من در اندروید اسدیو فایل دیمنشن رو ندارم

سعید شاهینی

سلام، وقت بخیر، خودتون می تونید این فایل رو بسازید مشکلی نداره

سید محمد وجدانی زاده replyپاسخ

استاد سلام خسته نباشید
الان به نظر شما ما آموزش هارو براساس لایوت قدیمی اندروید یاد یگیریم یا خودمونو با ConstraintLayout همگام کنیم یعنی اول بریم آپدیت های جدید رو ببینیم
سوال دگ اینکه موقع کار با ConstraintLayout ویو ها کامل به گوشه های صفحه شبیه ساز نمی چسبند و یه حاشیه وجود داره راهنمایی کنید
ممنون

سعید شاهینی

سلام، پیشنهاد من اینه از constraint layout استفاده نکنید چون مشکلات زیاد داره. (حداقل فعلا تا موقعی که مشکلاتش برطرف شه)

Saeed Hoseini replyپاسخ

سلام استاد عزیز.در اندروید استدیوی من به ریلیتیو لیوت از کانستریت لیوت استفاده شده.میخواستم بدونم چطوری به ریلیتیو تبدیل میشه.منظورم اینه به طور کلی چطوری همه قابلیت های ریلیتیو بیاد.مثلا‌کانستریت من alignparentrightرو نداره.چطور به ریلیتیو تبدیل کنم‌مرسی اگر راهنمایی کنید.

سعید شاهینی

سلام وقت بخیر، اون خطی که ConstraintLayout تعریف می شه رو پاک کنید به جاش بنویسید RelativeLayout دقیقا مطابق چیزی که داخل ویدیو مشاهده می کنید

سید محمد وجدانی زاده replyپاسخ

استاد سلام خسته نباشید
کار با این اکتیوینتی تموم شده فقط همه ی ویو ها تو بعضی از پلتفرم ها جا نمیشه مثلا دکمه ثبت میره بیرون راهنمایی کنید ممنون

سعید شاهینی

سلام وقت بخیر. خیلی خوبه که تونستید این صفحه رو به خوبی پیاده سازی کنید. راه حل مشکلی که گفتید رو جلسه 9 آموزش دادم. باید از ScrollView استفاده کنید

Salar Ahmady replyپاسخ

ضمن عرض سلام و خسته نباشید خدمت مدرس محترم این دوره
من یک سوالی داشتم . در پوشه values من پوشه dimens رو ندارم! فقط سه تا فایل xml هستش . الان تنظیماتی که رو به عنوان پیش فرض میخوام اضافه کنم کجا باید بزارم؟!

موسوی replyپاسخ

سلام واسه من این ویدیو دان نمیشه..یه پیج جدید باز میکنه و توی اون پخش میکنه…مشکل چیه ؟

بهرام آزادی replyپاسخ

با سلام
احتراما من تصویر بک گراند پروژه(همون تصویر بزرگ با طرح ماه) رو وقتی به پروژه اضافه میکنم حتی با وجود استفاده از دو خاصیت زیر استفاده میکنم ولی هنگام نمایش بر روی گوشی خودم که صفح نمایشش هم نسبتا بزرگ نیست ولی تصویر کوچک نمایش داده میشه و از سمت چپ و راست کل صفحه نمایش رو در بر نمیگیره
مشکل کجاست؟

ممنونم

 android:scaleType="fitCenter"
 android:adjustViewBounds="true"
سپهر تابعیان replyپاسخ

سلام استاد
هنگام Runبا ارور
‘Error runnig ‘app
The activity must be export or contain an intent-filterمواجه می شوم !
و دیگه حرف آر در فایل جاوا نمی شناسه (setContentView(R.layout.activity_pacticity)
لطفا راهنمایی بفرمایید.

سعید شاهینی

سلام، داخل توضیحات جلسه این موضوع رو آموزش دادم که چطور این مشکل رو حل کنید

سپهر تابعیان

هنوز به حرف R ایراد می گیرد !! و اپ اجرا نمی شود

سعید شاهینی

سلام دلیلش این هست که مشکلی در یکی از xml های پروژه تون وجود داره، باید چک کنید ببینید کدوم یک از لایوت هاتون ارور داره، با خط قرمز ارور نشون می ده

سعید شاهینی replyپاسخ

لازم نیست کانفیگوریشن رو عوض کنید، فقط طبق توضیحاتی که داخل صفحه جلسه دادم IntentFilter رو کات کنید و داخل تگ اکتیویتی که می خواید به صورت پیش فرض اجرا بشه Paste کنید

حسین یوسفی replyپاسخ

سلام استاد خوبید من وقتی دکمه رو در سمت راست میزارم بعدش موقع اجرا کردن تو جنی موشن دکمه تو سمت چپ قرار میگیره لطفا کمک کنید

حسین یوسفی replyپاسخ

یه سوال هم اینکه constraintlayout رو چطور به ریلاتیولایوت تبدیل کنم من عوض میکنم رنگ ریلاتیولایوت مشکی میشه

ارسال نظرات

کاربر گرامی، امکان ارسال نظر و پشتیبانی برای دوره های مجازی فقط برای دانشجویان این دوره امکان پذیر می باشد.

1 2