مشکل با اسکرول ویو (scroll view)
دوستان و اساتید عزیز ، سلام
تو برنامه م از اسکرول ویو استفاده کردم.خب یه مشکلی باهاش دارم.
آب مون تو یه جوب نمیره ، فایده نداره. خسته م کرده.
خدا خیرتون بده شما یه لطفی کنید مشکل ما رو حل کنید.
ببینید قبل اینی که از اسکرول ویو استفاده کنم ، UI رو طوری طراحی کرده بودم که تو همه گوشی ها با اندازه های مختلف درست نشون بده.
تو طراحی م از Button هایی استفاده کردم که بک گراندش تصویر هستش.
و اندازه اینها رو نسبی داده بودم، یعنی نسبت به اندازه رزولوشن تغییر کنه.
تا قبل از استفاده از اسکرول ویو مشکل نداشت و همه چی درست بود.
ولی وقتی میخوام همه این کنترل ها که تو یه Linearlayout هست رو داخل اسکرول ویو نشون بدم ، حالت نمایش button ها بهم میریزه
1.اولا سایزشون تو گوشی های مختلف درست نمایش نمیده
2.دوما حالت نمایش خود Button هم بهم میریزه (منظور اینه که از لحاظ ارتفاع کم نشون داده میشه و بجای اینکه مربع نشون داده بشن ، به شکل مستطیل نمایش داده میشه)
راستی اسکرول ویو بصورت عمودی هستش (بصورت عمودی اسکرول میخوره)
یه مسئله دیگه هم هست
تو نمایش متن تو لیست ویو یه مشکل دارم.(مشکل ظاهری)
از فونت BYekan برای نوشته های داخل لیست ویو استفاده می کنم.
مشکلی که هست اینه که تا گوشی های 4 اینچ از لحاظ ظاهری مشکل ندارم ولی برای گوشی های بزرگتر از 4 اینچ مشکل دارم.
حالا شرح مشکل :
اگه خلاصه بگم اینطور میشه
نوشته ها بصورت نصفه نشون داده میشه
یعنی شما فرض بگیرید کلمه (فراغ) رو از وسط قطع شده نشون میده و حرف ( ر ) و ( غ ) نصفه دیده میشه.
دقیقا مث این میمونه که قسمت بالای خط درست نشون میده ، پایین خط هم شرمنده
این مشکل رو به یکی از دوستان گفتم
ایشون گفتن که ارتفاع خط ت کمه
بیشتر ش کردم ، درست شد (ولی تو گوشی های کوچیک تر از 4 اینچ)
خیلی ور رفتم نشد که نشد
نمیدونم دیگه چیکار کنم
خدا خیرتون بده ، یه فکری به حال ما بکنید...
این مشکل زمانی اتفاق می افته که View شما Property های View قبلی رو نداشته باشه.مثلا زمانی که همه دکمه هاتون رو از یک LinearLayout به یک RelativeLayout وارد میکنید این مشکل پیش میاد
راه حل : شما زمانی که دکمه هاتون رو جابه جا میکنید، دقت کنید که لایه بالاییشون چیه، و اگر از اسکرول ویو استفاده میکنید حتما لایه بالایی رو به اسکرول ویو اضافه کنید بعد دکمه ها رو به اون لایه وارد کنید
اون مشکل دومتون هم باید لایه ای که TextView توش قرار داره، و لایه های بالایی اونا رو ( از نظر ارتفاع ) بزرگتر کنید که متن مورد نظر شما به طور کامل نمایش داده بشه.
اگر این جواب نداد تکست ویو رو توی یک LinearLayout قرار بدید و LayoutHight رو بر روی اون تکست ویو FillParent انتخاب کنید.
حالا این که صفحه شما توی گوشی های زیر 4 اینچ بزرگتر نمیشه یه مشکل دیگست، راح حل اونم اینه که از اسکرول ویو استفاده بشه.
راه حل Sadeghbarout درسته.قبلا برای برنامه ام همین کار رو کردم.
چند تا کد که مورد نیازت میشه :
من چون دکمه توی لایوت برنامه ام داشتم که داخلشون عکس set شده بود ، ارتفاع دکمه ها رو بر اساس ارتفاع صفحه تنظیم میکردم تا برای گوشی های با سایز صفحه ی کوچک تعداد مناسب تری دکمه نمایش داده بشه.
اول طول و عرض صفحه رو این طوری به دست آوردم:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth(); // deprecated
int height = display.getHeight(); // deprecated
بعد نسبتی که ارتفاع دکمه ها باید set می شد توی گوشی های بزرگ و کوچک رو توی یه متغیر میریختم:
if(height<250){
target_height=(int) 3.8;
}
else{
target_height=(int) 4.9;
}
بعد اینطوری ارتفاع دکمه هام که توشون عکس set شده بود رو تغییر میدادم :
for (int n=1;n<=15;n++){
LinearLayout.LayoutParams params = (LayoutParams) btn[n].getLayoutParams();
params.height = (int) (height/target_height);
btn[n].setLayoutParams(params);
}
نمی گم این کدها برای شما هم کار میکنه. شما باید بر اساس ui خودتون این طوری یا اگه نشد از یک روش دیگه استفاده کنید.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .