آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

تعیین همزمان Weight و Width در Horizontal Linear Layout

Mohammad-S  2 سال پیش  2 سال پیش
0 0

سلام.

میدونیم اگه بخوایم به عناصر موجود در Horizontal Linear Layout وزن بدیم، باید Width اونها رو صفر بذاریم.
یا اگه Width بدیم، باید وزن ندیم.

حالا اگه همزمان هم وزن بدیم و هم Width، چه اتفاقی از نظر علمی میفته؟ وزن تعیین کننده هست یا مقدار Width ؟

به طور مثال در قسمتی که استاد آقاجانی Linear Layout رو توضیح میدن، زمانی که Width رو صفر میذارم حالت 1 برقرار میشه(دقیقاً عین آموزش) اما زمانی که Width رو 48dp میذارم، حالت 2 برقرار میشه. (در هر دو حالت وزن دهی انجام شده است)

میتونید همین پروژه رو از این لینک دانلود کنید و شما هم تست کنید و نتیجه رو اعلام کنید.

 برای این سوال 5 پاسخ وجود دارد.
پاسخ به سوال 
Homan  2 سال پیش
+2 0

سلام

توجه داشته باشید که اگر شما وزن (1)به عنصری داخل linear بدهید بستگی دارد orintation لایه تون vertical باشه یا horizontal و لایه برای وزن دهی به این مقوله توجه خواهد داشت و حتی اگر شما به طول و عرض عنصر هم مقدار دهی کنید ولی در همان عنصر وزن دهی هم انجام شده باشد باز هم کل فضای باقیمانده پر خواهد شد.

همینطور که در تصاویر می بینید من با اینکه به دو فیلد widith و height مقدار دادم اما باز هم TextView باز هم وزن گرفت . چیزی که برای عنصر ما اولویت دارد وزن دهی است و وقتی از وزن دهی استفاده می کنید دیگر widith و height اثر گذار نخواهند بود و weight تعیین کننده است و با توجه به orientation باقیمانده فضا را پر خواهد کرد.

پاسخ به سوال 
Mohammad-S  2 سال پیش
0 0

از پاسخ شما ممنونم و توضیحات شما کاملاً درست. اما اتفاقی که در این پروژه میفته، برخلاف این توضیحات هست

در این پروژه یک linear layout داریم که horizontal هست و داخلش سه تا textview هست که width اونها رو صفر و weight اونها رو 0.33 دادیم.(مطابق تصویر زیر)

در پایین liner layout مذکور، یک liner layout دیگه هم داریم که اینم horizontal هست و داخلش یک text view و یک liner layout دیگه هست که vertical هست. به text view وزن 0.33 رو دادیم و پهناش هم صفر و به linear layout وزن 0.66 رو دادیم. (مطابق تصویر زیر)

خب انتظار داریم که text view شماره 13، از نظر پهنا دقیقاً هم عرض با text view شماره 10 بشه(چون تکست‌ویو شماره 10 وزن 0.33 رو داره و این تکست‌ویو هم وزن 0.33 رو داره همچنین دو تا تکست‌ویو 11 و 12 مجموعا وزن 0.66 رو دارن و لینیرلَیوت هم وزن 0.66 رو داره). درحالی که کمی از textview شماره 10 عقب تر هست. (پس اتفاقی برخلاف انتظار داره میفته!) چرا؟

حالا بحث جالب‌تر اینکه وقتی به text view شماره 13 پهنای 24dp رو میدم(و وزنش همچنان 0.33 هست)، پهناش دقیقاً برابر پهنای textview شماره 10 میشه.(مطابق تصویر زیر)

حالا اگه بهش وزن ندیم و پهناش همون 24dp باشه مثل تصویر زیر میشه:

پس ما در مجموع 3 حالت متفاوت داشتیم:

1 پهنا صفر و وزن 0.33
2 پهنا 24dp و وزن 0.33
3 پهنا 24dp و بدون تعریف وزن

 

 

پاسخ به سوال 
پیام  2 سال پیش
+1 0

سلام

درباره حالت آخر گفتید که به تکست ویو وزن ندادید، ولی در کدی که نوشتید این طور نیست

درباره مشکلی که گفتید شاید به خاطر اینه که عرض لایه کنار تکست ویو برابر wrap_content تعریف شده، شاید اگر مقدار صفر باشد مشکل حل شود.

0 0
سلام. اگه به کد بیشتر دقت کنید، کدِ مربوط به وزن رو کامنت کردم؛ یعنی قبل از کد لینک گذاشتم. وقتی لینک قبل از کد میذاری کامنت میشه و توسط IDE و کامپایلر خوانده نمیشه. پس انگار بهش وزن ندادم و اون خط وجود نداره. (2 سال پیش)
0 0
سلام. اگه به کد بیشتر دقت کنید، کدِ مربوط به وزن رو کامنت کردم؛ یعنی قبل از کد دو تا / گذاشتم. وقتی دوتا / قبل از کد میذاری کامنت میشه و توسط IDE و کامپایلر خوانده نمیشه. پس انگار بهش وزن ندادم و اون خط وجود نداره. (2 سال پیش)
0 0
همچنین با صفر گذاشتن عرض لایه کنار تکست‌ویو، مشکل حل نشد. (2 سال پیش)
پاسخ به سوال 
پیام  2 سال پیش
+1 0

کامنت کردن رو می دونم ولی تا اون جا که من دیدم روشی که گفتید برای بخش کدنویسی کاربرد داره نه فایل های xml.

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

0 0
در مورد کامنت کردن کد های xml حق با شما بود و در فایل های xml به صورت دیگری کامنت می‌شوند. اما در مورد مشکل: ساختار به این صورت است که یک لینیرلیوت افقی داریم که یک تکست‌ویو(شماره 13) و یک لینیرلیوت عمودی داخلش هست و به ترتیب وزن 0.33 و 0.66 رو بهشون دادیم. سپس داخل لینیرلیوت عمودی 3 تا لینیرلیوت افقی هست داخل هر کدام 2 تکست‌ویو هست. به نظرم تعدد عناصر دلیلی منطقی بر درست کارنکردن نمی‌باشد. از طرفی در فیلمی که استاد آقاجانی این مبحث رو تدریس می‌کنن، اشاره کردن که علت فیکس نشدن تکست‌ویو 13 با شماره 10، مارجین هایی هست که به تکست‌ویو ها دادیم. و برای رفع این مشکل نیاز به یکسری محاسبات هست. (2 سال پیش)
0 0
تصویر حالت سوم اصلاح شد و از تذکر شما بابت کامنت کردن در فایل های xml ممنونم. (2 سال پیش)
0 0
همچنین اگر زحمت نیست، لطف کنید فایل این پروژه رو از این لینک دانلود کنید و شما هم پروژه رو تست کنید که شاید شما با راه حلی منطقی مشکل رو حل کردید. (2 سال پیش)
پاسخ به سوال 
پیام  2 سال پیش
0 0

خواهش می کنم. درباره کامنت کردن اصلا بحث تذکر نبود، آنچه رو که دیده بودم گفتم

درباره مشکل هم گفتم شاید، چون مطمئن نبودم. یک احتمال رو مطرح کردم. لینک پروژه رو هم قبلا گذاشته بودید و دانلود کرده بودم، احتمالی که به نظرم رسید گفتم. ولی این طور که گفتید خود استاد راجع به مشکل توضیح دادن


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .