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

مشکل با اسکرول ویو (scroll view)

Reza.M  11 سال پیش  11 سال پیش
+3 0

دوستان و اساتید عزیز ، سلام

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

آب مون تو یه جوب نمیره ، فایده نداره. خسته م کرده.

خدا خیرتون بده شما یه لطفی کنید مشکل ما رو حل کنید.

ببینید قبل اینی که از اسکرول ویو استفاده کنم ، UI رو طوری طراحی کرده بودم که تو همه گوشی ها با اندازه های مختلف درست نشون بده.
تو طراحی م از Button هایی استفاده کردم که بک گراندش تصویر هستش.
و اندازه اینها رو نسبی داده بودم، یعنی نسبت به اندازه رزولوشن تغییر کنه.
تا قبل از استفاده از اسکرول ویو مشکل نداشت و همه چی درست بود.
ولی وقتی میخوام همه این کنترل ها که تو یه Linearlayout هست رو داخل اسکرول ویو نشون بدم ، حالت نمایش button ها بهم میریزه
1.اولا سایزشون تو گوشی های مختلف درست نمایش نمیده
2.دوما حالت نمایش خود Button هم بهم میریزه (منظور اینه که از لحاظ ارتفاع کم نشون داده میشه و بجای اینکه مربع نشون داده بشن ، به شکل مستطیل نمایش داده میشه)

راستی اسکرول ویو بصورت عمودی هستش (بصورت عمودی اسکرول میخوره)


 

یه مسئله دیگه هم هست
تو نمایش متن تو لیست ویو  یه مشکل دارم.(مشکل ظاهری)
از فونت BYekan برای نوشته های داخل لیست ویو استفاده می کنم.
مشکلی که هست اینه که تا گوشی های 4 اینچ از لحاظ ظاهری مشکل ندارم ولی برای گوشی های بزرگتر از 4 اینچ مشکل دارم.

حالا شرح مشکل :
اگه خلاصه بگم اینطور میشه
نوشته ها بصورت نصفه نشون داده میشه 
یعنی شما فرض بگیرید کلمه (فراغ) رو از وسط قطع شده نشون میده و حرف ( ر ) و ( غ ) نصفه دیده میشه.
دقیقا مث این میمونه که قسمت بالای خط درست نشون میده ، پایین خط هم شرمنده

این مشکل رو به یکی از دوستان گفتم
ایشون گفتن که ارتفاع خط ت کمه
بیشتر ش کردم ، درست شد (ولی تو گوشی های کوچیک تر از 4 اینچ)
خیلی ور رفتم نشد که نشد
نمیدونم دیگه چیکار کنم

خدا خیرتون بده ، یه فکری به حال ما بکنید...

0 0
اینظور که نه کدی گذاشتی نه.. خوب زیاد نمیشه کمک کرد ولی فکر میکنم برای مشکل اولتون فکر میکنم اگه همه عناصر رو انتخاب کنید، بعد با Ctrl+X کاتشون کنید، بعد لایه ای که در اسکرول ویو قرار داره رو RelativeLayout تعیین کنید و سپس وارد همین لایه شده(قسمت درج کد) و بعد Paste کنید عناصر رو. حالا تست کنید ببینید چی میشه، البته یادتون نره قبلش از پروژه یه پشتیبان داشته باشید که اگه خراب شد... موفق باشید (11 سال پیش)
+3 0
وزن دادن به کنترل ها توی scroolView که معنا نداره(وزن دادن در راستای اسکرول منظورمه). راهی که به ذهن من میرسه اینه توی oncreat اندازه صفحه نمایش رو بگیری و height و width کنترل ها رو تعیین کنی (11 سال پیش)
0 0
بذارید ببینم با راه حل این دوستمون Hamidd (که حرف شما رو تایید میکنن) به نتیجه می رسم یا نه. به هر حال ازینکه وقت گذاشتید ممنونم. (11 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
Hajhosseini  11 سال پیش
+2 0

این مشکل زمانی اتفاق می افته که View شما Property های View قبلی رو نداشته باشه.مثلا زمانی که همه دکمه هاتون رو از یک LinearLayout به یک RelativeLayout وارد میکنید این مشکل پیش میاد
راه حل : شما زمانی که دکمه هاتون رو جابه جا میکنید، دقت کنید که لایه بالاییشون چیه، و اگر از اسکرول ویو استفاده میکنید حتما لایه بالایی رو به اسکرول ویو اضافه کنید بعد دکمه ها رو به اون لایه وارد کنید

اون مشکل دومتون هم باید لایه ای که TextView توش قرار داره، و لایه های بالایی اونا رو ( از نظر ارتفاع ) بزرگتر کنید که متن مورد نظر شما به طور کامل نمایش داده بشه.
اگر این جواب نداد تکست ویو رو توی یک LinearLayout قرار بدید و LayoutHight رو بر روی اون تکست ویو FillParent انتخاب کنید.
حالا این که صفحه شما توی گوشی های زیر 4 اینچ بزرگتر نمیشه یه مشکل دیگست، راح حل اونم اینه که از اسکرول ویو استفاده بشه.

0 0
پاسختون رو الان دیدم من :) (11 سال پیش)
پاسخ به سوال 
hamidd  11 سال پیش
+2 0

راه حل 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 خودتون این طوری یا اگه نشد از یک روش دیگه استفاده کنید.

0 0
از راهنمایی تون ممنون. اگه امکانش هست توضیح بیشتری بدید: مثلا کدی که شما گفتید از کجا تشخیص میده که الان گوشی که داره نشون میده 5 اینچه یا تبلیت 10 اینچ ؟ با اندازه هر اینچ این قضیه رو چک میکنه ؟ (11 سال پیش)
+2 0
ببینید برای من کد بالایی جواب میداد ولی شما بسته به نوع Layout ات و محتوای درونش باید که کد مناسب برای خودت بنویسی، من به پروژه شما دسترسی ندارم، فقط خواستم ایده بدم. برای این که سایز صفحه رو به اینچ بگیری به این لینک مراجعه کن. (11 سال پیش)
+2 0
S.D.T عزیز اگه جواب حمیدجان کمکتون کرده اون رو vote کنید ;) (11 سال پیش)
+1 0
صادق جون فدایی داری ;) (11 سال پیش)

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