انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)

چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)

#1
سلام به دوستان عزیز
من توی برنامم سه تا Button دارم که اونارو چیدم.ولی با شبیه ساز که چک کردم در دو صفحه نمایش متفاوت ، متوجه شدم که باتن ها سایزشون تغییر نمیکنه.یهنی در صفحه نمایش کوچک ،باتن بزرگ و در صفحه نمایش بزرگ،باتن کوچک میشود!!
مثل شکل زیر

   

از دوستانه با تجربه میخوام که کمک کنند،ایا این عیب مشکل ساز میشه؟ یا مشکلی نداره و سلیقه ای هست؟
ممنون میشم راهنمایی کنید.
پاسخ

چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)

#2
سلام.
بله باید این مشکل برطرف شود.
اندازه و موقعیت Button ها را بر حسب واحد dp تعیین کنید تا در صفحات نمایش با اندازه های مختلف، به صورت مشابه نمایش داده شوند.

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط foad.pezeshkian

چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)

#3
اندازه بر حسب dp هست
اینم کدهاش
ولی مشکل داره!!

کد پی‌اچ‌پی:
android:id="@+id/LinearLayout10"
   
    
android:layout_width="match_parent"
    
android:layout_height="match_parent"
    
android:background="@drawable/pic_background"
    
android:orientation="vertical"
    
android:paddingBottom="@dimen/activity_vertical_margin"
    
android:paddingLeft="@dimen/activity_horizontal_margin"
    
android:paddingRight="@dimen/activity_horizontal_margin"
    
android:paddingTop="@dimen/activity_vertical_margin" >

    <
Button
        android
:id="@+id/btn_update"
        
android:layout_width="310dp"
        
android:layout_height="50dp"
        
android:layout_gravity="center"
        
android:layout_marginTop="90dp"
        
android:background="@drawable/btn_update_2"
        
android:text="@string/txt17"
        
android:textColor="#ffffff"/>
    
    <
Button
        android
:id="@+id/btn_see"
        
android:layout_width="310dp"
        
android:layout_height="50dp"
        
android:layout_gravity="center"
        
android:layout_marginTop="40dp"
        
android:background="@drawable/btn_see_2"
        
android:text="@string/txt18"
        
android:textColor="#ffffff" />
    
    <
Button
        android
:id="@+id/btn_see_encript"
        
android:layout_width="310dp"
        
android:layout_height="50dp"
        
android:layout_gravity="center"
        
android:layout_marginTop="40dp"
        
android:background="@drawable/btn_see"
        
android:text="@string/txt19"
        
android:textColor="#ffffff" />

</
LinearLayout
 
پاسخ

چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)

#4
همچنین کلید زیر را نیز بخوانید :

کلید شماره 239

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط foad.pezeshkian

چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)

#5
(۱۳۹۴/۰۱/۱۱, ۰۴:۱۰ ب.ظ)'admin' نوشته: همچنین کلید زیر را نیز بخوانید :

کلید شماره 239



 


این کلید رو خوندم،ولی مشکل من باتن ها هستن ، باتن ها به پوشه های drawable ربطی دارن!!!??
 
پاسخ

چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)

#6
اولین نکته که باید بگم اینه که میگید در صفحه کوچک بزرگ میشه .دقیق نیست..بهتره بگیم :در صفحه های کوچک فضای بیشتری نسبت به صفحه بزرگتر اشغال میکنه..خب اینم بخاطر اینه که شما وقتی توی یک صفحه کوچک (مثلا عرض 320) سایزه 310 میدید،خب عملا باتن عرض کل صفحه رو میگیره ..واین خیلی واضحه که توی صفحات بزرگ سایزه 310 ،خیلی کوچکتر نسبت به عرض صفحه به نظر میرسه..
خب راه حل چیه؟..برای عکسها که میتونید داخل پوشه بندی که خوده اکلیپس انجام داده عکسها رو قرار دهید و خودش به صورت اتوماتیک انجام میده..
اما برای سایزه View مثل باتن یا هرچیز دیگه ای...
میتونید بر اساس سایزه گوشی به صورت داینامیک سایزهای مختلف بدید..(با استفاده از دستور if)
گام اول : بدست آوردن سایزه گوشی  با دستور زیر

کد پی‌اچ‌پی:
Display display getWindowManager().getDefaultDisplay(); 
        
int width display.getWidth();  // deprecated
        
int height display.getHeight(); 

گام دوم . مشخص کردن اندازه برای سایز باتن

کد پی‌اچ‌پی:
Button b1=(Button)findViewById(R.id.button1);
        
b1.setLayoutParams(new LinearLayout.LayoutParams(400100)); 

گام سوم :قرار دادن دستور شرطی if

کد پی‌اچ‌پی:
if(width<450)
        
b1.setLayoutParams(new LinearLayout.LayoutParams(400100));
else if(
450<width<650)
        
b1.setLayoutParams(new LinearLayout.LayoutParams(500200));
.... 

فقط اعدادی که من در بالا دادم برای مثال بود ،شما بر اساس سایزهای مختلف گوشی اندازه درست رو تنظیم کنید
پاسخ
 سپاس شده توسط admin ، foad.pezeshkian ، rayej.ir

چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)

#7
ممنون بابت پاسختون
دو تا نکته واسم جای سوال داره
اول اینکه شما و بقیه برنامه نویسان واسه برنامه خودشون از این روش ، یعنی if استفاده میکنند؟؟؟!
دوم این که این اعدادی که برای سایز دادید رو چجور پیدا کنم که دقیق باشه؟چون خودتون گفتید که اعداد رو مثال زدید!
 
پاسخ

چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)

#8
(۱۳۹۴/۰۱/۱۱, ۰۹:۵۴ ب.ظ)'foad.pezeshkian' نوشته: اول اینکه شما و بقیه برنامه نویسان واسه برنامه خودشون از این روش ، یعنی if استفاده میکنند؟؟؟!
دوم این که این اعدادی که برای سایز دادید رو چجور پیدا کنم که دقیق باشه؟چون خودتون گفتید که اعداد رو مثال زدید!
 

 

معمولا برای مواردی که با روش های مرسوم، نمی توان به نتیجه مطلوب رسید، این روش به کار می رود. یعنی در واقع ایشان دقیق ترین روش را شرح دادند (سایر روش ها دقت این روش را ندارند)، البته منظورم بدون استفاده از حالت بندی است (یعنی دیگر شرط های if را نداشته باشیم). شاید شخصی همین دقیق ترین روش را بخواهد و کدنویسی آن برایش مهم نباشد، اما شخص دیگری همان روش های نقریبی را ترجیح بدهد و نخواهد درگیر این کدنویسی ها شود. در واقع سلیقه ای است.
وقتی اندازه صفحه نمایش گوشی را به دست آورید، می توانید اندازه مورد نظرتان برای آن عنصر خاص را به صورت درصدی از اندازه مربوط به کل صفحه نمایش (عرض و طول) به دست آوردید (بدون شرط if و حالت بندی). مثلا 50 درصد یا ... . حالا ایشان برای این روش، حالت بندی نیز انجام داده اند، یعنی تعیین کرده اند که مثلا برای یک بازه خاص از نظر اندازه، یک اندازه مشخص برای عنصر قرار داده شود (در صورت تمایل می توان بخش های شرطی را برداشت تا در همه گوشی ها، درصد مشخصی به اندازه عنصر اختصاص داده شود).
فکر کنم اعدادی که برای بازه بندی شرط های if به کار برده اند، همان اعداد استاندارد مربوط به دسته بندی صفحه های نمایش بر اساس اندازه باشد (یعنی بر اساس همان استاندارد دسته بندی صورت گیرد).

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط foad.pezeshkian ، داش بهروز

چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)

#9
ممنون بابت توضیحات و راهنمایی هایتان
اما مشکل من هنوز حل نشده
از if که استفاده میکنم Button از بالا سمت راست اندازش شروع میشه!
برای اعمال درصد چجور باید عمل کنم!؟
کاش نمونه کدی میدادید که در فایل XML باتن را در جای خودش قرار بده و نسبت به سایز نمایشگر باشه.خیلی دوست دارم روشی که خودتون استفاده میکنید رو ببینم چون خیلی وقته درگیره این مشکل هستم
پاسخ

چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)

#10
دوست عزیز درمورده سوال اول شما اینکه این سایزها چطور بدست می آد یه استانداردهایی هست که بیشتر شرکتهای سازنده گوشی سعی میکنند که حدالامکان رعایت کنند(اجباری نیست )..میتونید با سرچ ساده تقریبی از سایزهای گوشی ها رو بدست آورید..مثلا واسه عرض گوشی بیشتر (240_320_480_720_1024) استفاده میکنند...
میتونید همون طور که آدمین گفت از درصد استفاده کرد ...اما اینکه گفتید از سمت راست نمایش میده بخاطر اینه که دقت کنید ما یک LinearLayout به صورت داینمایک ساختیم چون بهش gravity  یا margin  ....ندادیم از به صورت پیش فرض از گوشه سمت چپ شروع میکنه.اگر با این نوع آشنایی ندارید .از روش زیر استفاده کنید..

فرض میکنیم شما جایگاه و نحوه ی قرار گیری دکمه ها رو  در Xml  انجام دادید فقط مشکل در سایز بندی آن است..کافیه

کد پی‌اچ‌پی:
Button b1=(Button)findViewById(R.id.button1);
        
ViewGroup.LayoutParams params b1.getLayoutParams(); 

میاد LayoutParams دکمه رو  میگیره از صفحه...
حالا کافیه سایزه دلخواهتون بدید بهش.

کد پی‌اچ‌پی:
params.width 600;    
        
b1.setLayoutParams(params); 

حالا با همون اندازه های استاندارد یک دستور if بندازید سایزها رو تغییر دهید..

کد پی‌اچ‌پی:
if(width<320)
praams.width=120;//سایز دلخواهتون بزارید
else if (width<480)
params.width=160;
......
.
.
b1.setLayoutParams(params); 

مشکلتون حل میشه..
درمورده سوال سوم که از چه روشی استفاده میکنیم؟..بستگی به نوع پروژه که داریم .اگر برنامه رو واسه ارگان یا سازمانی بزنید خب عملا باید برای حرفه ای نشان دادن برنامه این ریزه کاری ها رو میشه انجام داد..اگر نه یک اپ ساده برای مارکتینگها میخواهید بسازید بازهم بنابر نوع عملکرد برنامه . همان طور که آدمین جان گفت درگیر کد نمیشن و بیشتر از حالت تقریب استفاده میکنند..

موفق باشید..
پاسخ
 سپاس شده توسط foad.pezeshkian ، admin

چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)

#11
خیلی ممنون بابت کدها ، کمک ها و توضیحات
این کدها عالی بودن و مشکل منو حل کردند.
پاسخ

چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)

#12
سلام . 
من هم میخوام داخل صفحه ام 3 تا باتن مربع بزارم که در همه ی صفحات اندازه اش متناسب با اون صفحه نمایش تغییر کنه. باید چه کد هایی رو داخل فایل جاوا بنویسم ؟
تشکر
 
پاسخ

چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)

#13
(۱۳۹۴/۰۱/۱۱, ۰۵:۴۴ ب.ظ)داش بهروز نوشته: اولین نکته که باید بگم اینه که میگید در صفحه کوچک بزرگ میشه .دقیق نیست..بهتره بگیم :در صفحه های کوچک فضای بیشتری نسبت به صفحه بزرگتر اشغال میکنه..خب اینم بخاطر اینه که شما وقتی توی یک صفحه کوچک (مثلا عرض 320) سایزه 310 میدید،خب عملا باتن عرض کل صفحه رو میگیره ..واین خیلی واضحه که توی صفحات بزرگ سایزه 310 ،خیلی کوچکتر نسبت به عرض صفحه به نظر میرسه..
خب راه حل چیه؟..برای عکسها که میتونید داخل پوشه بندی که خوده اکلیپس انجام داده عکسها رو قرار دهید و خودش به صورت اتوماتیک انجام میده..
اما برای سایزه View مثل باتن یا هرچیز دیگه ای...
میتونید بر اساس سایزه گوشی به صورت داینامیک سایزهای مختلف بدید..(با استفاده از دستور if)
گام اول : بدست آوردن سایزه گوشی  با دستور زیر

کد پی‌اچ‌پی:
Display display getWindowManager().getDefaultDisplay(); 
 
       int width display.getWidth();  // deprecated
 
       int height display.getHeight(); 

سلام و تشکر از راهنمایی شما.
این کد ها سایز گوشی رو بر اساس پیکسل بدست میاره.
برای این ه بر اساس dpبدست بیاد باید چکار کرد؟
پاسخ

چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)

#14
سلام من از اکلیپس در ویندوز استفاده میکنم آی دی باتن ها در فایل R.java ساخته نمی شود چگونه از باتن ها در MainActivity استفاده کنم
پاسخ

چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)

#15
با سلام و عرض خسته نباشید.
من در مورد کلید 239 مشکلی دارم که حل نمیشه.
من برنامه رو در دو پوشه layout و layout-small ذخیره کردم و و متناسب با اندازه صفحه image button ها را ذخیره کردم. اما روی هر دوتا گوشی یه فایل رو باز میکنه
چطوری گوشی متوجه میشه که فایل متناسب خودش رو باز کنه
اگر راهنمایی کنین ممنون میشم
پاسخ

چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)

#16
با سلام و عرض خسته نباشید.
من در مورد کلید 239 مشکلی دارم که حل نمیشه.
من برنامه رو در دو پوشه layout و layout-small ذخیره کردم و و متناسب با اندازه صفحه image button ها را ذخیره کردم. اما روی هر دوتا گوشی یه فایل رو باز میکنه 
چطوری گوشی متوجه میشه که فایل متناسب خودش رو باز کنه 
اگر راهنمایی کنین ممنون میشم
پاسخ

چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)

#17
(۱۳۹۴/۰۱/۱۱, ۱۰:۰۷ ب.ظ)admin نوشته:
foad.pezeshkian\ dateline='\'1427822640' نوشته: اول اینکه شما و بقیه برنامه نویسان واسه برنامه خودشون از این روش ، یعنی if استفاده میکنند؟؟؟!
دوم این که این اعدادی که برای سایز دادید رو چجور پیدا کنم که دقیق باشه؟چون خودتون گفتید که اعداد رو مثال زدید!
 

 

معمولا برای مواردی که با روش های مرسوم، نمی توان به نتیجه مطلوب رسید، این روش به کار می رود. یعنی در واقع ایشان دقیق ترین روش را شرح دادند (سایر روش ها دقت این روش را ندارند)، البته منظورم بدون استفاده از حالت بندی است (یعنی دیگر شرط های if را نداشته باشیم). شاید شخصی همین دقیق ترین روش را بخواهد و کدنویسی آن برایش مهم نباشد، اما شخص دیگری همان روش های نقریبی را ترجیح بدهد و نخواهد درگیر این کدنویسی ها شود. در واقع سلیقه ای است.
وقتی اندازه صفحه نمایش گوشی را به دست آورید، می توانید اندازه مورد نظرتان برای آن عنصر خاص را به صورت درصدی از اندازه مربوط به کل صفحه نمایش (عرض و طول) به دست آوردید (بدون شرط if و حالت بندی). مثلا 50 درصد یا ... . حالا ایشان برای این روش، حالت بندی نیز انجام داده اند، یعنی تعیین کرده اند که مثلا برای یک بازه خاص از نظر اندازه، یک اندازه مشخص برای عنصر قرار داده شود (در صورت تمایل می توان بخش های شرطی را برداشت تا در همه گوشی ها، درصد مشخصی به اندازه عنصر اختصاص داده شود).
فکر کنم اعدادی که برای بازه بندی شرط های if به کار برده اند، همان اعداد استاندارد مربوط به دسته بندی صفحه های نمایش بر اساس اندازه باشد (یعنی بر اساس همان استاندارد دسته بندی صورت گیرد).

سلام
من با کدی که دوستان فرمودند میتونم ابعاد طول و عرض صفحه را بدست بیارم . اما یه نکته این که دستور فوق ابعاد کل صفحه نمایش را میده . من میخواهم ابعاد قسمت هایی همچون نوار بالای صفحه که ایکون انتن و ساعت و... و همچنین ابعاد نواری که اسم برنامه را نشون میده را از ابعاد کل صفحه کم کنم و ابعاد دقیق قسمت ازاد صفحه را بدست بیارم.
لطفا راهنمایی کنین
یه راه بنظر خودم رسید که ابعاد linerlayout اصلی را fill_parent دادم بعد اومدم تو برنامه و با کمک دستورات params ابعاد linerlayout را گرفتم اما با این روش عدد -1 برمیگرده که معنی همون fill_parent را میده
پاسخ
 سپاس شده توسط شماره مجازی امارات


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان