تعیین همزمان Weight و Width در Horizontal Linear Layout
سلام.
میدونیم اگه بخوایم به عناصر موجود در Horizontal Linear Layout وزن بدیم، باید Width اونها رو صفر بذاریم.
یا اگه Width بدیم، باید وزن ندیم.
حالا اگه همزمان هم وزن بدیم و هم Width، چه اتفاقی از نظر علمی میفته؟ وزن تعیین کننده هست یا مقدار Width ؟
به طور مثال در قسمتی که استاد آقاجانی Linear Layout رو توضیح میدن، زمانی که Width رو صفر میذارم حالت 1 برقرار میشه(دقیقاً عین آموزش) اما زمانی که Width رو 48dp میذارم، حالت 2 برقرار میشه. (در هر دو حالت وزن دهی انجام شده است)
میتونید همین پروژه رو از این لینک دانلود کنید و شما هم تست کنید و نتیجه رو اعلام کنید.
سلام
توجه داشته باشید که اگر شما وزن (1)به عنصری داخل linear بدهید بستگی دارد orintation لایه تون vertical باشه یا horizontal و لایه برای وزن دهی به این مقوله توجه خواهد داشت و حتی اگر شما به طول و عرض عنصر هم مقدار دهی کنید ولی در همان عنصر وزن دهی هم انجام شده باشد باز هم کل فضای باقیمانده پر خواهد شد.
همینطور که در تصاویر می بینید من با اینکه به دو فیلد widith و height مقدار دادم اما باز هم TextView باز هم وزن گرفت . چیزی که برای عنصر ما اولویت دارد وزن دهی است و وقتی از وزن دهی استفاده می کنید دیگر widith و height اثر گذار نخواهند بود و weight تعیین کننده است و با توجه به orientation باقیمانده فضا را پر خواهد کرد.
از پاسخ شما ممنونم و توضیحات شما کاملاً درست. اما اتفاقی که در این پروژه میفته، برخلاف این توضیحات هست
در این پروژه یک 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 و بدون تعریف وزن |
سلام
درباره حالت آخر گفتید که به تکست ویو وزن ندادید، ولی در کدی که نوشتید این طور نیست
درباره مشکلی که گفتید شاید به خاطر اینه که عرض لایه کنار تکست ویو برابر wrap_content تعریف شده، شاید اگر مقدار صفر باشد مشکل حل شود.
کامنت کردن رو می دونم ولی تا اون جا که من دیدم روشی که گفتید برای بخش کدنویسی کاربرد داره نه فایل های xml.
درباره مشکلی که گفتید هم شاید به خاطر اینه که در قسمت بالا یک لایه شامل سه تکست ویو داریم اما در زیر آن لایه های تو در تو با تکست ویوهای متعدد.
خواهش می کنم. درباره کامنت کردن اصلا بحث تذکر نبود، آنچه رو که دیده بودم گفتم
درباره مشکل هم گفتم شاید، چون مطمئن نبودم. یک احتمال رو مطرح کردم. لینک پروژه رو هم قبلا گذاشته بودید و دانلود کرده بودم، احتمالی که به نظرم رسید گفتم. ولی این طور که گفتید خود استاد راجع به مشکل توضیح دادن
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .