استفاده از لایه های XML در برنامه نویسی اندروید

استفاده از لایه های XML در برنامه نویسی اندرویدReviewed by آریانا on Dec 3Rating: 5.0استفاده از لایه های XML در برنامه نویسی اندرویددر برنامه نویسی آندروید، ما می توانیم ویجت هایی را به اکتیویتی ها ایجاد و ضمیمه کنیم و این کار رو از طریق کدهای جاوا انجام می دهیم

در برنامه نویسی آندروید، ما می توانیم ویجت هایی را به اکتیویتی ها ایجاد و ضمیمه  کنیم و این کار رو از طریق کدهای جاوا انجام می دهیم، اما روش متداول تر این است که از لایه های مبتنی بر XML استفاده کنیم. ماهیت پویای ویجت ها برای حالات پیچیده تر وجود دارند، ویدجت در زمان کامپایل کردن شناخته نمی شوند (برای مثال، هنگامی که یک ستون از دکمه های رادیویی بر اساس داده های گرفته شده از اینترنت دارید).

لایه های مبتنی بر XML چه هستند؟

 لایه های مبتنی بر XML مشخصاتی هستند که رابط بین ویدجت ها و کانتینرها هستند که در فرمت XML کد نویسی می شوند. به طور خاص، آندروید  XML  را عنوان یک منبع در نظر می گیرد و فایل های لایه ها را در یک فولدر به نام  res/layout  در کنار پروژه آندروید ذخیره  می کند. هر یک از فایل های XML شامل سه عنصر درختی به نام ویدجت ها و کانتینر و ساختار یک نمایش است. ویژگی های عناصر XML  که خواص آن هستند، توضیح می دهند که یک ویدجت چگونه باید کار کند. برای مثال، اگر یک دکمه  یا button  داشته باشید و این دکمه دارای دارای این خصوصیت اندرویدی باشد:

textStyle=”bold”

این بدان معنی است که متنی که قرار است بر روی دکمه نمایش داده شود باید با فونت پررنگ نمایش داده شود.

 چگونه می توانیم از لایه های مبتنی بر XML استفاده کنیم؟

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

شاید بزرگترین دلیلش پشتیبانی از ابزارهای نمایش تعریف شده باشد مثل ابزارهای ساخت و ساز یک IDE . این ابزارها می توانند یک رابط کاربری ایجاد کنند. در اصل تولید کدهای جاوا به جای XML  هستند اما ویرایش بازخوانی کدها با داده هایی که در فرمت XML   ساخته شده اند، مشکل تر است. می توان گفت که XML مزایاهای بسیاری برای نوشتن ابزارها و راحتی برنامه نویسانی دارد.

 ساختار لایه های مبتنی بر XML 

 کانتینر روت باید فضای نام XML اندروید را که یک استاندارد توصیه شده توسط W3C می باشد،تعریف کند که معمولا یک زیرکلاس ViewGroup شبیه RelativeLayout ، LinearLayout و … است.

[code]

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!-- adding child items here -->
</RelativeLayout>

[/code]

تمام آیتم های ویو از خود ویو ارثبری میکنند ،و در فضای نام اون تعریف می شوند. معمولا هر آیتم یک id تعریف شده دارد که منحصر به فرد است.

activity_main.xml

[code]

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Click me!" />
</RelativeLayout>

[/code]

توجه: android: layout_width و android:layout_height دو خاصیت الزامی برای آیتم هستند. اینها عرض و ارتفاع نمایش تعریف در کانتینر روت را تعریف می کنند.

     و اندروید استودیو، این فایل XML را در پیش نمایش شبیه به عکس زیر تولید خواهد کرد:

فایل XML اندروید

سمبل @

بسیاری از ویدجت ها و ظروف فقط در فایل لایه های XML ظاهر می شوند و نیازی نیست که به کدهای جاوا ارجاع داده شوند. برای مثال یک برچسب استاتیک (TextView) اغلب در یک فایل layout به منظور نشان داده شدن در جایی که ظاهر خواهند شد، قرار داده می شوند. این نوع عناصر در فایل های XML نباید خصوصیت اندرویدی داشته باشند. آیدی ها نام برای آنها ارائه می کنند، اما هر زمان که می خواهند در کد جاوا استفاده شوند، باید android:id. داشته باشند.

این یک کنوانسیون است برای استفاده از id value . که یک نام منحصر به فرد برای ویدجت در layout, @+id/ برای اولین بروز value id در فایل layout  می باشد.

ضمیمه XML به کدهای جاوا

اگر شما ویدجت ها را در یک کانتینر برای فایل لایه XML راه اندازی کنید،  activity_main.xml نامیده می شوند که در یک فولدر res/layout نگهداری می شوند. همه شما نیاز به یک بیانیه در متد onCreate() از مخاطبین اکتیویتی خودتان که لایه را توسط setContentView() استفاده می کند، دارید.

[code]

setContentView(R.layout.activity_main);

[/code]

برای دسترسی به ویجت با استفاده از findViewById()، شناسه ی ویجت را در query منتقل می کند.  شماره شناسایی که توسط اندروید در کلاس R تولید می شود، R.id. است. (که در آن چیزی به عنوان ویدجت خاص وجود دارد که شما آن را جستجو می کنید.) حالا من یک کد full Activity ارائه می کنم که view  را از یک فایل  XML تولید می کند و مسئول رسیدگی به رویداد کلیک برای Button است.

[code]

package devexchanges.info.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button)findViewById(R.id.button);
        button.setOnClickListener(onClick());
    }
    private View.OnClickListener onClick() {
        return new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "Button Clicked!", Toast.LENGTH_SHORT).show();
            }
        };
    }
}

[/code]

بعد از اجرای برنامه شما باید خروجی زیر را داشته باشید:

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

نتیجه گیری

در این پست ما ملزومات XML را برای ایجاد یک root element برای layout و کدگذاری یک UI element پایه و اساسی (Button) توضیح دادیم. برخی XML های پیشرفته تر که به شما امکان کنترل بیشتری برای UI می دهد.

پاسخ دهید