رفتن به مطلب

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


jeqele

ارسال‌های توصیه شده

متاسفانه مثل اینکه موقع ایجاد تغییرات توی سایت یا شایدم از اول خودم اشتباه کردم و توی نمونه کدی که برای لیست دادم مشکل به وجود اومده.

تغییرش دادم اون پست رو.

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

ممنون.

اینم همون کد دوباره.

Dim st As String = ""
    Dim a As String
    Dim samplelabel As Label
    For i = 0 To Listview1.Size - 1
        a = Listview1.GetItem(i)
        If a.Length > st.Length Then
			st = a
		End If
	Next
    samplelabel.Initialize("SampleLabel")
    samplelabel.Visible = False
    Activity.AddView(samplelabel, Listview1.Left, Listview1.Top, Listview1.Width, Listview1.SingleLineLayout.ItemHeight)
    samplelabel.Text = st
    samplelabel.TextSize = Listview1.SingleLineLayout.Label.TextSize
    ChangeFontByLabelSize.MinimomFontLabel(samplelabel, samplelabel.TextSize)
    Listview1.SingleLineLayout.Label.TextSize = samplelabel.TextSize
    samplelabel.RemoveView
لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 3 هفته بعد...
  • پاسخ 50
  • ایجاد شده
  • آخرین پاسخ

متاسفانه مثل اینکه موقع ایجاد تغییرات توی سایت یا شایدم از اول خودم اشتباه کردم و توی نمونه کدی که برای لیست دادم مشکل به وجود اومده.

تغییرش دادم اون پست رو.

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

ممنون.

اینم همون کد دوباره.

Dim st As String = ""
    Dim a As String
    Dim samplelabel As Label
    For i = 0 To Listview1.Size - 1
        a = Listview1.GetItem(i)
        If a.Length > st.Length Then
			st = a
		End If
	Next
    samplelabel.Initialize("SampleLabel")
    samplelabel.Visible = False
    Activity.AddView(samplelabel, Listview1.Left, Listview1.Top, Listview1.Width, Listview1.SingleLineLayout.ItemHeight)
    samplelabel.Text = st
    samplelabel.TextSize = Listview1.SingleLineLayout.Label.TextSize
    ChangeFontByLabelSize.MinimomFontLabel(samplelabel, samplelabel.TextSize)
    Listview1.SingleLineLayout.Label.TextSize = samplelabel.TextSize
    samplelabel.RemoveView

سلام و ممنون از کارخوبتون

میخواستم بدونم برای لیستی که داخل اسکرول ویو ساخته میشه هم این امکان وجود داره؟

dim svlist as scrollveiw
dim lbllist as label

For i=0 To cur.RowCount-1
cur.Position=i
 
Dim cur2 As Cursor
cur2=sql3.ExecQuery("SELECT id FROM khtr")
cur2.Position=i
 
lbllist.Initialize("list")
lbllist.Text=cur.GetString("title")
svlist.Panel.AddView(lbllist,0,40*i,svlist.Width,40)
 
Next
لینک ارسال
به اشتراک گذاری در سایت های دیگر

برای تغییر فونت لیست داخل اسکرول ویو، قبل از کد بالا(که حلقه اصلی برای ساخت لیست اسکرول ویو هست) از کد زیر استفاده کردم

 

Dim smpllbl As Label
	Dim st1 As String
	Dim st2 As String
	st1=""
	
	For i=0 To cur.RowCount-1 'برای یافتن بزرگترین تیتر '
		cur.Position=i
		
		Dim cur2 As Cursor
		cur2=sql3.ExecQuery("SELECT id FROM khtr")
		cur2.Position=i
		st2=cur.GetString("title")
		If st2.Length>st1.Length Then
			st1=st2
		End If
	Next
	
	smpllbl.Initialize("")
	smpllbl.Visible=False
	Activity.AddView(smpllbl,svlist.Width/40,(116*(9.5*svlist.Width/10)/545)*i,77*svlist.Width/100,116*(9.5*svlist.Width/10)/545)
	smpllbl.Text=st1
	Log(smpllbl.TextSize)
	smpllbl.Typeface=Typeface.LoadFromAssets("B Lotus.TTF")
	ChangeFontByLabelSize.MinimomFontLabel(smpllbl,25)
	Log(smpllbl.TextSize)
و فونت لیبل اصلی رو برابر smpllbl.TextSize قرار دادم

، و شکر خدا جواب داد.

ممنون از jeqele

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 3 هفته بعد...

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

شما سایز متن رو بذارید 100.

حالا دیگه نکران نباشید ، طبق همون گوشی ، اینقد کوچیک میشه که جا بشه توش.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بله متوجه شدم .اما من سایز متن رو 100 هم که میزارمبه طور کلی اندازه متن کوچیکه . میخوام کلا متن رو بزرگتر نمایش بده . یعنی توی این روش نمیشه بر طبق یک سایز مشخص کوچیک و بزرگ کنه ؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بعد یک نکته دیگه عجیبه . هر چی متن بلند تر باشه سایزش رو کوچیک تر میکنه . هر چی متن کمتر باشه سایزش رو بزرگتر میکنه . جالب نبیست اینطوری که . راهی نیست واسه این مسئله ؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بعد یک نکته دیگه عجیبه . هر چی متن بلند تر باشه سایزش رو کوچیک تر میکنه . هر چی متن کمتر باشه سایزش رو بزرگتر میکنه . جالب نبیست اینطوری که . راهی نیست واسه این مسئله ؟

 

این که عجیب نیست.

وقتی متنتون بلند باشه انقد کوچیکش میکنه تا داخل لیبل جا بشه.

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

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

 

برای متن بلند یه راه دیگه هم هست که ممکنه کمک کنه(تست نکردم خودم)

متن رو توی دو خط بنویسین.

مثلا:

"It's a test for label size"

"it's a test" & CRLF & "labelsize"

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خوب ببینید ما یه متن طولانی دارم که ارتفاعش رو میخوایم با اسکرول ویو هماهنگ کنیم و از کتابخونه stringutils استفاده میکنیم . خوب متن رو اگر عادی سایز بدیم توی هر گوشی که وارد میشه اسکرولش درسته و هماهنگه اما سایز متن ریز و درشت میشه .مثلا ما سایز متن رو میدیم 18 . توی تبلت متن خیلی ریز میشه . اما توی گوشی های خیلی کوچیک متن خیلی سایزش بزرگه

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

 

 

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خوب ببینید ما یه متن طولانی دارم که ارتفاعش رو میخوایم با اسکرول ویو هماهنگ کنیم و از کتابخونه stringutils استفاده میکنیم . خوب متن رو اگر عادی سایز بدیم توی هر گوشی که وارد میشه اسکرولش درسته و هماهنگه اما سایز متن ریز و درشت میشه .مثلا ما سایز متن رو میدیم 18 . توی تبلت متن خیلی ریز میشه . اما توی گوشی های خیلی کوچیک متن خیلی سایزش بزرگه

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

 

 

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

خب چرا از همون کتابخونه که داده بودم استفاده نمیکنید؟؟

بااون دیگه هروقت فونت رو دادین کافیه اون دستور Set رو بنویسید ، دیگه وقتی فونت هم بزرگ شد دوباره جا میشه تو اسکرول ویو ، چرا میخواین متن رو کوچیک کنید که تو اسکرول جا بشه؟؟ اسکرول رو بزرگ کنید متن توش جا بشه.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خب چرا از همون کتابخونه که داده بودم استفاده نمیکنید؟؟

بااون دیگه هروقت فونت رو دادین کافیه اون دستور Set رو بنویسید ، دیگه وقتی فونت هم بزرگ شد دوباره جا میشه تو اسکرول ویو ، چرا میخواین متن رو کوچیک کنید که تو اسکرول جا بشه؟؟ اسکرول رو بزرگ کنید متن توش جا بشه.

کدوم کتابخونه رو می فرمایید ؟

 

بنده واسه متن های طولانی از String utils استفاده میکنم . اما همون مشکلی که توی پست قبلیم گفتم هست . رتهنمایی بفرمایید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خوب ببینید ما یه متن طولانی دارم که ارتفاعش رو میخوایم با اسکرول ویو هماهنگ کنیم و از کتابخونه stringutils استفاده میکنیم . خوب متن رو اگر عادی سایز بدیم توی هر گوشی که وارد میشه اسکرولش درسته و هماهنگه اما سایز متن ریز و درشت میشه .مثلا ما سایز متن رو میدیم 18 . توی تبلت متن خیلی ریز میشه . اما توی گوشی های خیلی کوچیک متن خیلی سایزش بزرگه

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

 

 

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

 

متوجه نشدم منظورتونو.

این چه ربطی به اسکرول ویو داره.

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

شما یا باید اندازه لیبلتو بدونی نسبت به اون متنتو تنظیم کنی با این ماژول یا اندازه فونتتو بدونی با stringutils سایز لیبلتو باهاش تنظیم کنی.

نمیشه هر دو متغیر باشن.

ولی راه هم داره.

راهش اینه که اندازه 100%y رو بریزی تو یه متغیر که بهت طول بزرگ گوشی رو میده بعد بسته به اندازه این فونت یا لیبل رو (ترجیحا فونت رو) ثابت تعریف کنی.

درباره ldpi, mdpi, hdpi, xhdpi تو گوگل سرچ کن یه چیزایی پیداکنی احتمالا که کمکت کنه.

 

 

باتوم ها به صورت پیش فرض با nine patch طراحی شدن.

این باعث میشه که محیط مجاز برای نوشتار کوچیک تر از خود باتوم باشه.

با آزمون و خطا احتمالا به نتیجه برسی.

قسمت مجاز باتوم برای نوشتار تقریبا برابر یه لیبل با دو سوم سایزه.

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

برا لیست ویو که مطمعنم کداشو نوشتم.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خوب ببینید ما یه متن طولانی دارم که ارتفاعش رو میخوایم با اسکرول ویو هماهنگ کنیم و از کتابخونه stringutils استفاده میکنیم . خوب متن رو اگر عادی سایز بدیم توی هر گوشی که وارد میشه اسکرولش درسته و هماهنگه اما سایز متن ریز و درشت میشه .مثلا ما سایز متن رو میدیم 18 . توی تبلت متن خیلی ریز میشه . اما توی گوشی های خیلی کوچیک متن خیلی سایزش بزرگه

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

 

 

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

 

متوجه نشدم منظورتونو.

این چه ربطی به اسکرول ویو داره.

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

شما یا باید اندازه لیبلتو بدونی نسبت به اون متنتو تنظیم کنی با این ماژول یا اندازه فونتتو بدونی با stringutils سایز لیبلتو باهاش تنظیم کنی.

نمیشه هر دو متغیر باشن.

ولی راه هم داره.

راهش اینه که اندازه 100%y رو بریزی تو یه متغیر که بهت طول بزرگ گوشی رو میده بعد بسته به اندازه این فونت یا لیبل رو (ترجیحا فونت رو) ثابت تعریف کنی.

درباره ldpi, mdpi, hdpi, xhdpi تو گوگل سرچ کن یه چیزایی پیداکنی احتمالا که کمکت کنه.

 

 

باتوم ها به صورت پیش فرض با nine patch طراحی شدن.

این باعث میشه که محیط مجاز برای نوشتار کوچیک تر از خود باتوم باشه.

با آزمون و خطا احتمالا به نتیجه برسی.

قسمت مجاز باتوم برای نوشتار تقریبا برابر یه لیبل با دو سوم سایزه.

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

برا لیست ویو که مطمعنم کداشو نوشتم.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

متوجه نشدم منظورتونو.

این چه ربطی به اسکرول ویو داره.

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

شما یا باید اندازه لیبلتو بدونی نسبت به اون متنتو تنظیم کنی با این ماژول یا اندازه فونتتو بدونی با stringutils سایز لیبلتو باهاش تنظیم کنی.

نمیشه هر دو متغیر باشن.

ولی راه هم داره.

راهش اینه که اندازه 100%y رو بریزی تو یه متغیر که بهت طول بزرگ گوشی رو میده بعد بسته به اندازه این فونت یا لیبل رو (ترجیحا فونت رو) ثابت تعریف کنی.

درباره ldpi, mdpi, hdpi, xhdpi تو گوگل سرچ کن یه چیزایی پیداکنی احتمالا که کمکت کنه.

 

 

باتوم ها به صورت پیش فرض با nine patch طراحی شدن.

این باعث میشه که محیط مجاز برای نوشتار کوچیک تر از خود باتوم باشه.

با آزمون و خطا احتمالا به نتیجه برسی.

قسمت مجاز باتوم برای نوشتار تقریبا برابر یه لیبل با دو سوم سایزه.

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

برا لیست ویو که مطمعنم کداشو نوشتم.

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

 

باتن رو هم گفته بودمااا.

ببینید اول nine patch رو سرچ کنین که منظئرمو متوجه بشین.

یه لیبل تعریف و اینیشیالایز کنین و ویزبیلیتیشو false کنین.

نوشته ی باتن رو به لیبل نسبت بدید.

سایز این لیبل رو 0.66 سایز باتن بدید.

حالا با همین ماژول اندازه فونت رو برای اون لیبل به دست بیارین.

بعذ اندازه فونت باتن رو برابر اندازه فونت لیبل قرار بدید.

اگه نشد اون مقدار0.66 رو بالا پایین کن تا به یه مقدار منطقی برسین.

اگه متوجه نشدین یا نتونستین بگین کد بنویسم، اما اول خ.دتون سعی کنین.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

توضیحاتتون رو تا حدودی متوجه شدم .

اما اگر لطف کنید با کد بگید ممنون میشم

 

،رض کنیم باتنی که میخوایم فونتشو مشخص کنیم اسمش هست btn

توی کد زیر مقدار 0.66 رو تغییر بدید تا با آزمون و خطا در نهایت به یه نتیجه معقول برسید

Dim samplelabel As Label
    samplelabel.Initialize("SampleLabel")
    samplelabel.Visible = False
    Activity.AddView(samplelabel, btn.Left, btn.Top, btn.Width*0.66, btn.Height*0.66)
    samplelabel.Text = btn.Text
    samplelabel.TextSize = btn.TextSize
    ChangeFontByLabelSize.MinimomFontLabel(samplelabel, samplelabel.TextSize)
    btn.TextSize = samplelabel.TextSize
    samplelabel.RemoveView
لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

،رض کنیم باتنی که میخوایم فونتشو مشخص کنیم اسمش هست btn

توی کد زیر مقدار 0.66 رو تغییر بدید تا با آزمون و خطا در نهایت به یه نتیجه معقول برسید

Dim samplelabel As Label
    samplelabel.Initialize("SampleLabel")
    samplelabel.Visible = False
    Activity.AddView(samplelabel, btn.Left, btn.Top, btn.Width*0.66, btn.Height*0.66)
    samplelabel.Text = btn.Text
    samplelabel.TextSize = btn.TextSize
    ChangeFontByLabelSize.MinimomFontLabel(samplelabel, samplelabel.TextSize)
    btn.TextSize = samplelabel.TextSize
    samplelabel.RemoveView

 

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

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

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

شما باید اسکرول بدید به متنتون و اسکرول رو با اندازه طول متن برابر کنید بهتره جستجو کنسد در سایت من خودم قرار دادم و یا تایپیک بزنید

مسیر این تایپیک با سوال شما متفاوته

موفقق باشید :gol: :gol:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • اضافه کردن...