+2 امتیاز
قبل در برنامه نویسی توسط (59 امتیاز)
ویرایش شده قبل توسط

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

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

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

2 پاسخ

+2 امتیاز
قبل توسط (1.1هزار امتیاز)

شاید برای طراحی 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 می شود.

منبع

0 امتیاز
قبل توسط (2.2هزار امتیاز)
ویرایش شده قبل توسط

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

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

ادامه

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

سوالات مشابه

+1 امتیاز
1 پاسخ 1.5هزار بازدید
0 امتیاز
2 پاسخ 953 بازدید
...