تالار گفتمان nCIS.ir

نسخه‌ی کامل: لی آوت عمودی و افقی
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
لی آوت عمودی و افقی  و  تعیین موقعیت viewهای اندروید

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


اینطور که متوجه شدم اگر به شیوه این لینک

لی اوتی ایجاد کنم ، با  تغییر سابز گوشی ها امکان  نامنظم دیده شدن View ها هست .
برای همین  روشی مثل روش پایین رو تست کردم .


<LinearLayout
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:weightSum="5">

   <Button
       android:layout_width="0dp"
       android:layout_height="wrap_content"
       android:layout_weight="1"
       android:text="1" />

   <Button
       android:layout_width="0dp"
       android:layout_height="wrap_content"
       android:layout_weight="3"
       android:text="2" />

   <Button
       android:layout_width="0dp"
       android:layout_height="wrap_content"
       android:layout_weight="1"
       android:text="3" />

</LinearLayout>


با این کد هم نتونستم حالتی مثل حالت عکس سمت راست طراحی کنم ، منظورم اینکه View های بعدی مثل 3-4-5 از خط بعدی شروع بشن - چطور میان View ها خطوط فاصله ایجاد کنم - اینکه مثل  7 بدون اینکه در سمت راست  یا چپ کنترل ، کنترل دیگری باشه View مورد نظر رو وسط چین کنیم و ..

[attachment=272]


یه نکته دیگه اینکه وقتی این با این خط میخوام لی اوت رو عمودی کنم ، اینتلج خطا می ده

android:orientation="vertical"

اما به جای همون خط بنویسم

android:orientation="horizontal"

هیچ مشکلی  پیش نمیاد
شما باید یه LinearLayout عمودی بذارین و بعد داخلش سه تا LinearLayout افقی بندازین و به دوتای بالایی Margin Bottom به اندازه دلخواه برحسب dip بدین تا با پایینیشون فاصله داشته باشن. توی هرکدوم از دو تا لی اوت افقی بالایی هم سه تا Button رو بگذارین و به دوتای دوطرف پهنای ثابت بدین و سومی رو با پهنای 0 تنظیم کنید و بهش Layout Weight برابر با 1 بدین تا کل فضای باقیمانده رو پر کنه.

درمورد باکس سوم هم همینطوره فقط اگه میخواین وسط باشه و دوطرفش خالی باشه، بجای دکمه میتونین TextView بذارین و متنش رو خالی کنید یا اینکه کلاً فقط یه دکمه توی لی اوت باشه و به لی اوت، Padding چپ و راست به اندازه دلخواه بدین.
درمورد خطا هم متن خطا رو بگذارین.
[attachment=273]

ممنونم استاد
خطای بالا ظاهر میشه ، این کد XML اش هست ،  همونطور که تو  پست قبلی ام گفتم اون خطی رو که  با فلش مشخص کردم
وفتی برمی دارم به جاش خط پایین رو می نویسم


android:orientation="horizontal"


[attachment=274]

پ ن : الان دیدم عکس رو تو همین سایت اپلود کردین ، از اینکه حواسم نبوده معذرت میخوام اما کاش تذکر می دادین خودم انجامش می دادم .
وقتی جهت افقیه اصلاً چیزی نباید بنویسین. کلاً android:orientation رو حذف کنید.
نه استاد جهت افقی نیست که ، من تو پست قبلی منظورم این بود وقتی جهت رو افقی می زنم خطا برطرف میشه (ناقص نوشته بودم جمله امو ) ، میخوام لی اوت
عمودی درست کنم اما این خط android:orientation="vertical" باعث میشه خطایی که گفتم ظاهر بشه
شدیداً توصیه میکنم از اندروید استودیو و Intellij IDEA برای کار استفاده نکنید. هر نسخه جدیدی که میاد بدتر از قبلیه. بهترین محیط برای توسعه اندروید همون eclipse با پلاگین ADT هست. امروز هم یه مشکلی برای یکی از کارآموزان دوره اندروید پیشرفته پیش اومد که نمیذاشت صفحه وب رو بخونن با اینکه مجوز اینترنت به برنامه دادیم ولی به سوکت گیر میداد درحالی که عین همون برنامه توی اکلیپس براحتی کار میکرد.
ایکلیپس رو نصب کردم ، اونجا خطا نداد ولی خوب باتن ها ناپدید شدن و ..
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical" >

   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content" android:layout_marginBottom="24dip">

       <Button
           android:id="@+id/btn1"
           android:layout_width="64dip"
           android:layout_height="wrap_content"
           android:text="1" />

       <Button
           android:id="@+id/btn2"
           android:layout_width="0dip"
           android:layout_height="wrap_content"
           android:text="2" android:layout_weight="1"/>

       <Button
           android:id="@+id/btn3"
           android:layout_width="64dip"
           android:layout_height="wrap_content"
           android:text="3" />

   </LinearLayout>

   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content" android:layout_marginBottom="64dip">

       <Button
           android:id="@+id/btn4"
           android:layout_width="64dip"
           android:layout_height="wrap_content"
           android:text="4" />

       <Button
           android:id="@+id/btn5"
           android:layout_width="0dip"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="5" />

       <Button
           android:id="@+id/btn6"
           android:layout_width="64dip"
           android:layout_height="wrap_content"
           android:text="6" />

   </LinearLayout>

   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content" >

       <Button
           android:id="@+id/btnEmpty1"
           android:layout_width="64dip"
           android:layout_height="wrap_content" />

       <Button
           android:id="@+id/btn7"
           android:layout_width="0dip"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="7" />

       <Button
           android:id="@+id/btnEmpty2"
           android:layout_width="64dip"
           android:layout_height="wrap_content" />

   </LinearLayout>

</LinearLayout>

اینم تصویر ضمیمه:

[attachment=275]
البته من به دو دکمه طرفین، پهنای ثابت دادم ولی میتونید به راحتی بجای پهنای ثابت، مثل دکمه وسط به اونها هم وزن بدین.