چرا Activity پدر در اندروید استودیو Relative Layout است؟

+2 رأی
میانگین بازدید روزانه 0.28783 بازدید

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

و وقتی روش کلیک راست میکنیم برای تغییر به linearlayout همچین گزینه ای موجود نیست!

میخاستم بدونم دلیلیش چیه؟
آیا گوگل توصیه کرده لیوت پدر رو relativelayout بزاریم؟ چرا همچین توصیه ای کرده؟
میدونم از طریق کد میشه تغییر داد ولی مطمعنم گوگل برای خودش دلیلی داشته که در محیط بصری اندروید استودیو گزینه ای برای changelayout بر رویrealtivelayout قرار نداده.

سوال 7 سال قبل در تالار برنامه نویسی توسط mahdi-mortazavi (59 امتیاز)
ویرایش 7 سال قبل توسط Saeed Zarinfam

2 جواب

+2 رأی

شاید برای طراحی Layout های ساده، LinearLayout خیلی کاربردی باشد ولی وقتی یکم Layout ها پیچیده می شوند کاربا LinearLayout سخت می شود و حتی در بعضی موارد performance هم پایینتر می آید. به همین دلیل در اکثر موارد توصیه می شود از RelativeLayout استفاده شود. برای مثال فرض کنیم می خواهیم Layout زیر را طراحی کنیم:

این Layout شامل یک ImageView و دو TexView می شود:

پیاده سازی این Layout با استفاده از LinearLayout بصورت زیر می شود:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    
    android:padding="6dip">
    
    <ImageView
        android:id="@+id/icon"
        
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_marginRight="6dip"
        
        android:src="@drawable/icon" />

    <LinearLayout
        android:orientation="vertical"
    
        android:layout_width="0dip"
        android:layout_weight="1"
        android:layout_height="fill_parent">

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_weight="1"
                    
            android:gravity="center_vertical"
            android:text="My Application" />
            
        <TextView  
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_weight="1" 
            
            android:singleLine="true"
            android:ellipsize="marquee"
            android:text="Simple application that shows how to use RelativeLayout" />
            
    </LinearLayout>

</LinearLayout>

اما پیاده سازی آن را RelativeLayout بصورت زیر می شود:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    
    android:padding="6dip">
    
    <ImageView
        android:id="@+id/icon"
        
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_marginRight="6dip"
        
        android:src="@drawable/icon" />

    <TextView  
        android:id="@+id/secondLine"

        android:layout_width="fill_parent"
        android:layout_height="26dip" 
        
        android:layout_toRightOf="@id/icon"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        
        android:singleLine="true"
        android:ellipsize="marquee"
        android:text="Simple application that shows how to use RelativeLayout" />

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        
        android:layout_toRightOf="@id/icon"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_above="@id/secondLine"
        android:layout_alignWithParentIfMissing="true"
                
        android:gravity="center_vertical"
        android:text="My Application" />

</RelativeLayout>

اگر از View که با LinearLayout پیاده سازی شده در یک لیست استفاده کنیم، ساختن یک شئ از آن به نسبت معادل پیاده سازی شده با RelativeLayout زمانبرتر (کندتر) خواهد بود و نمونه پیاده سازی شده با RelativeLayout یک سطح سلسله مراتب کمتر دارد و سریعتر render می شود.

منبع

جواب 7 سال قبل توسط Saeed Zarinfam (1,044 امتیاز)
0 رأی

ببین این کمکی میکنه؟

زمانی که برای یک activity ، یک فایل xml متناظر می سازیم، معمولا نوع نمایش عناصر فایل xml متناظر آن، به صورت یکی از دو حالت LinearLayout و RelativeLayout می باشد. تفاوت این دو نوع نمایش، در نحوه قرارگیری عناصر مختلف در کنار یکدیگر می باشد.
مثلا اگر ما یک ImageView و یک TextView داشته باشیم، چنانچه بخواهیم که این دو عنصر، دقیقا در کنار هم چیده شوند، باید از حالت LinearLayout استفاده کنیم و چنانچه بخواهیم TextView بر روی ImageView قرار بگیرد، باید از حالت RelativeLayout استفاده کنیم.

ادامه

اینا هم هست: لینک ۱ و لینک ۲

جواب 7 سال قبل توسط saeedd (2,157 امتیاز)
ویرایش 7 سال قبل توسط Saeed Zarinfam

سوال های مشابه

0 رأی
1 جواب میانگین بازدید روزانه 0.09269 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.32901 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 8.1222,627 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.27807 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.21629 بازدید
0 رأی
2 جواب میانگین بازدید روزانه 0.19584 بازدید
0 رأی
2 جواب میانگین بازدید روزانه 0.14467 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.28276 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.39417 بازدید
کانال تلگرام جواب یاب
...