آموزش برنامه نویسی اندروید قسمت پنجم
باز هم سلام مجدد خدمت دوستان.
انواع layout ها در اندروید:
با مفهوم layout آشنا شدیم حالا میخوام دو نوع layout مهم و کاربردی رو بهتون توضیح بدم.
Linear Layout
این layout به صورت پیشفرض وقتی یک صفحه جدید در intellij میسازید هست. بصورت زیر:
که همونطور که میبینید و توضیحات فایلهای xml رو بهتون داده بودم این تگ LinearLayout الان شامل یک TextView هست.
اما خاصیت این layout چی هست. برید به بخش Design صفحتون و چندتا ابزار با Drag & Drop بندازید توی صفحه.
اگه دقت کنید میبینید هرچقدرم تلاش کنید نمیتونید دوتا دکمه رو کنار هم بذارید. و همه ابزارهاتون توی ردیفهایی زیر هم قرار میگیرن:
خب این خاصیت linear layout هست. حالا هر ابزاری گذاشتیدو برداریید و بعد برید توی بخش Text و حالا این تغییر رو توی تگ linear layout اتون بدید:
یعنی خاصیت orientation اون رو به vertical تغییر بدید.
حالا دوباره برید داخل بخش Design و دکمه(یا هر ابزاری) بندازید توی صفحه. اندفعه میبینید در بخشهای بالا، وسط و پایین صفحه میتونید دکمه بذارید و دکمههاتون توی یه راستای افقی قرار میگیرن.
از طرفی نمیتونید دوا دکمه رو در راستای عمودی زیر هم بذارید.
که این هم از خاصیت LinearLayout افقی هست.
خب linearlayout عمودی کاربرد بیشتری داره. برگردونیدش به این حالت و سه تا دکمه توی صفحه بذارید. میخوایم با یک سری خاصیت این layout اشنا شید.
قبل از اون به این خط نگاه کنید:
xmlns:android="http://schemas.android.com/apk/res/android"
حواستون باشه همیشه layout اصلی صفحتون یعنی اولین layout باید این صفت رو بهش بدید تا فعال بشه صفحه براتون
یکی از دکمه هاتونو انتخاب کنید. مثلا میخوایم توی کد بگیم که دکممون میخوایم وسط راستای عمودی قرار بگیره این صفتو بهش اضافه میکنیم:
android:layout_gravity="center"
که همین gravity میتونه به سمت راست یا چپ صفحه هم تعلق بگیره.
Relative Layout
این Layout کاربرد بسیار زیادی داره و خیلی مهم هست. ابزارهایی که گذاشتیدو پاک کنید. وارد Text بشید و layout خودتونو به RelativeLayout تغییر بدید
حالا برید به بخش دیزاین و سعی کنید دکمه توی صفحه Drag کنید. حالا میبینید که هرجایی میتونید بذارید ابزارهاتونو
حالا با attribute های مخصوص این layout اشنا میشیم. به بخش Text برگردید. مثلا اگر بخوام دکمه اولی بالای layout و در وسط قراربگیره طبق زیر کدشو میزنیم:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
/>
پس هروقت بخوایم ابزارمون به یکی از لبه های بالا، پایین، راست یا چپ RelativeLayout امون بچسبه از یکی ازدستورات زیر استفاده میکنیم:
layout_alignParentTop,
layout_alignParentBottom
layout_alignParentRight,
layout_alignParentLeft,
اگر بخوایم ابزارمون وسط راستای عمودی یا افقی که قرار داره توش، بیفته، یا اینکه کاملا وسط RelativeLayout امون قرار بگیره از یکی از صفتهای زیر استفاده میکنیم و اون رو برابر true قرار میدیم
layout_centerVertical,
layout_centerHorizontal,
layout_centerInParent
که البته حواسمون باید باشه بعضی از این صفتها باهم تداخل دارن مثلا اگر بگید layout_alignParentTop,
دیگه با استفادا از layout_centerInParent نمیتونید ابزارتونو وسط layout بیارید. چون نمیتونه هم به بالای layout قفل شه هم وسطش قرار بگیره.
خاصیت بعدی RelativeLayout این است که با استفاده از آن میتوانید ابزارها را نصبت به هم مکاندهی بکنید. یعنی مثلا بگید دکمه1 سمت راست دکمه2 قرار بگیره. این برای دیزاین نرمافزار خیلی بدرد میخوره چون که اگر برای مکان دادن به ابزارها از مختصات مثلا بخواید استفاده کنید خب توی گوشیهای مختلف دیزاینتون بهم میخوره
اما با دادن رابطه نسبی بین ابزارها میتونید یک چیدمان ثابت توی گوشیهای موبایل داشته باشید داشته باشید
به این ترتیب برای نسبت دادن موقعیت یک ابزار نسبت به ابزار دیگه از موارد زیر استفاده میشه
layout_toLeftOf,
layout_toRightOf,
layout_above,
layout_below
و توجه کنید این attribute چون نسبی به یک ابزار دیگه هست ازتون id ابزاری که دارید بهش ارجاع میدید رو هم میخواد. مثلا به ترتیب زیر دکمه دوم ()button1 روسمت راست دکمه اول قرار میدم (button)
و اخرین مورد قرار دادن ابزاری در راستای لبه ی ابزار دیگه است. مثلا فک کنید میخواهید دکمه سوم(button2 ) در زیر دکمه دوم (button1) و در امتداد سمت راستش قرار بگیره. کد اون بصورت زیر است:
پس به این ترتیب از روابط زیر میتوانید استفاده کنیدکه مانند روابط دسته قبل از شما id ابزاری که بهش ارجاع میدید رو هم میخواد:
layout_alignLeft,
layout_alignRight,
layout_alignTop,
layout_alignBottom
نظرات کاربران