رفتن به مطلب
  • 0

saeed_k

سوال

با سلام خدمت دوستان.

من متنی رو از دیتابیس روی یه label لود میکنم.ولی با توجه به طولانی بودن متن ،روی لیبل جا نمی شه.چطور اندازش رو افزایش بدم؟؟؟

ممنون میشم جواب بدید.اینم کدهای مربوطه:

Dim label1 As Label

label1.Initialize ("Label1")

label1.text=cur.GetString ("matn")

label1 .Gravity =Gravity.CENTER

ScrollView1.Panel .AddView(label1,0,0,ScrollView1.Width ,100%y )

Dim su As StringUtils

label1.TextSize =tanzimat2.size

label1 .Typeface =Typeface .LoadFromAssets (tanzimat2.font & ".ttf")

label1.Height =su.MeasureMultilineTextHeight(label1,label1.Text)

ScrollView1.Panel .Height =su.MeasureMultilineTextHeight(label1,label1.Text)+10%y

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

20 پاسخ به این سوال تاکنون داده شده است

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

ممنون از دوستان ولی بازم حل نشد و با توجه به افزایش سایز متن در تنظیمات مشکل بیشتر میشه.اینم کد مربوطه:

Dim label1 As Label 
label1.Initialize ("Label1")

label1.text=cur.GetString ("matn")
label1 .Gravity =Gravity.CENTER 



ScrollView1.Panel .AddView(label1,0,0,ScrollView1.Width ,100%y )


Dim su As StringUtils 
label1.TextSize =tanzimat2.size
label1 .Typeface =Typeface .LoadFromAssets (tanzimat2.font& ".ttf")
label1.Height =su.MeasureMultilineTextHeight(label1,label1.Text)
ScrollView1.Panel .Height =su.MeasureMultilineTextHeight(label1,label1.Text)+10%y

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

شرمنده کم سر میزنم.

نیازی به تابع نوشتن نیست دوستان.

از کتابخانه StringUtils استفاده کنید.

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

اگه کتابخانه رو نداشتین خبر بدین.

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

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

کسی نبود که داشته باشه ؟

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

نسخه 1.1 کتابخونه smartstring

smartstring.rar

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

همین تیکه کد همه چیزو حل میکنه برای اندازه ی لیبل من خودم همین دیروز استفاده کردم و اطلاعات هم از دیتابیس میخونم



Label1.height = su.MeasureMultilineTextHeight(label1,label1.text) 



اگه قراره تنظیمات داشته باشه برنامه هم باس دقت کنید که قبل این خط بیاید مقدار سایز فونت و نوعشو مشخص کنید

موفق باشید

مشکل این روش اینه که ارتفاع لیبل با اندازه متن تنظیم میشه ولی بهتره که اندازه فونت با ارتفاع لیبل تنظیم بشه دلیلش هم اینه که با توجه به کیفیت ppi صفحه نمایش های مختلف تو مدل گوشی های متفاوت اندازه فونت ممکنه کوچیک یا بزرگ بشه مثلا تو گوشی های قدیمی با صفحه نمایش معمولی اندازه فونت 16 خیلی بزرگه در حالی که تو گوشی های hd این اندازه خوبه و fullhd کوچیکه !!! پس راهش همون کتابخونه AutoTextSizeLabel هست تا با تنظیم کردن اندازه یک لیبل بصورت درصدی از طول و عرض صفحه نمایش اندازه فونت درست شه حالا یکی مردی کنه این لایب و بزاره*چشمک*

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

خوبه پس

بنده متدشو قرار میدم بقیه ریزه کاریاش با خودت عزیزم:

Sub Globals
Dim stu As StringUtils
End Sub

Sub SetTextSize(lbl As Label, txt As String)
 Dim dt As Float
 Dim limit = 0.5 As Float
 Dim h As Int

 lbl.Text = txt
 lbl.TextSize = 72
 dt = lbl.TextSize
 h = stu.MeasureMultilineTextHeight(lbl, txt)
 Do While dt > limit OR h > lbl.Height
   dt = dt / 2
   h = stu.MeasureMultilineTextHeight(lbl, txt)
   If h > lbl.Height Then
     lbl.TextSize = lbl.TextSize - dt
   Else
     lbl.TextSize = lbl.TextSize + dt
   End If
 Loop
End Sub

مثال از متد :

Sub Button1_Click
Dim txt = "Salam bebinid In Matn Tolaniye va Man Mikham Vaqti Toye Label Mizaram Label Dar Har Sizei Ke Hast In Matno Ja BEde To Khudesh" As String
SetTextSize(Label1, txt)
End Sub

مشکلی بود در خدمتم

فک کنم من بد توضیح دادم

میگم ارتفاع لیبل با فونت و مقدار متن برابر بشه

این کد سایز متن و با کم و زیاد میکنه تا تو لیبل جا بشه

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

همین تیکه کد همه چیزو حل میکنه برای اندازه ی لیبل من خودم همین دیروز استفاده کردم و اطلاعات هم از دیتابیس میخونم



Label1.height = su.MeasureMultilineTextHeight(label1,label1.text) 



اگه قراره تنظیمات داشته باشه برنامه هم باس دقت کنید که قبل این خط بیاید مقدار سایز فونت و نوعشو مشخص کنید

موفق باشید

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

همین تیکه کد همه چیزو حل میکنه برای اندازه ی لیبل من خودم همین دیروز استفاده کردم و اطلاعات هم از دیتابیس میخونم



Label1.height = su.MeasureMultilineTextHeight(label1,label1.text) 



اگه قراره تنظیمات داشته باشه برنامه هم باس دقت کنید که قبل این خط بیاید مقدار سایز فونت و نوعشو مشخص کنید

موفق باشید

su چه متغیریه؟ یه توضیحی بده کتابخونه میخواد؟

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

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

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

خب خودم مشکلو حل کردم این رو تو ماژول بزارید:

Sub textscale As Int

Dim S As Float=GetDeviceLayoutValues.Scale

If S<= 0.75 Then
Return 0.75
End If
If S= 1 Then
Return 1
End If
If S= 1.5 Then
Return 1.5
End If
If S>=2  Then
Return 2
End If
End Sub

حالا هر متنی که میخوایید درست نشون بده بر تابع بالا تقسیم کنید (البته باید با تنظیم اندازه تو یه گوشی متن درست نشون داده بشه) این تابع تشخیص میده که صفحه نمایش گوشی شما چه ppi داره

label.TextSize=4%y/m1.textscale

m1 ماژوله

البت میشه به GetDeviceLayoutValues.Scale هم تقسیم کرد ولی تو ماژول میشه اون مقیاس ها رو بسته به میل تغییر داد

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

آگه فقط متنه و عکس نداری میتونی از edittext استفاده کنی و input type رو none بزاری دیگه با تغیر سایز فونت و تعداد کاراکتر خودش اسکرول میشه

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

در سایت مرجع یک کتابخانه هست به نام: AutoTextSizeLabel

اگه کسی اون رو داره قرار بده . دقیقا کارش همینه.

SS-2013-06-30_11.49.54.png

این هم لینک تاپیک در سایت مرجع

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

شرمنده کم سر میزنم.

نیازی به تابع نوشتن نیست دوستان.

از کتابخانه StringUtils استفاده کنید.

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

اگه کتابخانه رو نداشتین خبر بدین.

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

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

مشکل با تابع من دقیقا حل نمیشه ولی اندازه متن دیگه خیلی ضایع نمیشه *خوشمزه*

پس هنوز مشکلو داریم هر کی داره بزاره *مکار*

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

از دوستان کسی نیس راهنماییمون کنه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

*غمگین**غمگین**غمگین**غمگین**غمگین**غمگین**غمگین**غمگین**غمگین**غمگین**غمگین**غمگین**غمگین**غمگین**غمگین*

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

صبر کنید شاید کسی کتابخانه رو داشته باشه و توی تاپیک قرار بده.

از سایت مرجع باید حتما Licensed User باشید تا بتونید دانلود کنید ...

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

دوست من شما بیا این خصیصه Inner Height اسکرول ویو رو زیاد کن شاید مشکلت حل شد

روی کنترل اسکرول ویو کلیک کن و توی پراپرتیسش برو Inner Height رو زیاد کن

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

دوست من شما بیا این خصیصه Inner Height اسکرول ویو رو زیاد کن شاید مشکلت حل شد

روی کنترل اسکرول ویو کلیک کن و توی پراپرتیسش برو Inner Height رو زیاد کن

فک کنم دوستمون منظورش اینه وقتی واسه برنامه تنظیمات سایز متن میزاره لیبل هم اندازه متن شه و بعد ارتفاع لیبل برابر با Inner Height بشه تا متن تو همه سایز ها کامل دیده بشه (حتی با کم و زیاد شدن متن) حالا اینکه چطور لیبل سایزشو با متن یکسان کنه به جز کتابخانه چیزی به ذهنم نمیرسه

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

خوبه پس

بنده متدشو قرار میدم بقیه ریزه کاریاش با خودت عزیزم:

Sub Globals
Dim stu As StringUtils
End Sub

Sub SetTextSize(lbl As Label, txt As String)
 Dim dt As Float
 Dim limit = 0.5 As Float
 Dim h As Int

 lbl.Text = txt
 lbl.TextSize = 72
 dt = lbl.TextSize
 h = stu.MeasureMultilineTextHeight(lbl, txt)
 Do While dt > limit OR h > lbl.Height
   dt = dt / 2
   h = stu.MeasureMultilineTextHeight(lbl, txt)
   If h > lbl.Height Then
     lbl.TextSize = lbl.TextSize - dt
   Else
     lbl.TextSize = lbl.TextSize + dt
   End If
 Loop
End Sub

مثال از متد :

Sub Button1_Click
Dim txt = "Salam bebinid In Matn Tolaniye va Man Mikham Vaqti Toye Label Mizaram Label Dar Har Sizei Ke Hast In Matno Ja BEde To Khudesh" As String
SetTextSize(Label1, txt)
End Sub

مشکلی بود در خدمتم

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

شرمنده کم سر میزنم.

نیازی به تابع نوشتن نیست دوستان.

از کتابخانه StringUtils استفاده کنید.

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

اگه کتابخانه رو نداشتین خبر بدین.

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

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

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

بایگانی شده

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

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

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