ali mo 264 ارسال شده در 1 مرداد، ۱۴۰۱ اشتراک گذاری ارسال شده در 1 مرداد، ۱۴۰۱ سلام بر همه دوستان ❤️ حتما دیدید که وقتی کاربر سایز فونت اصلی دستگاهش رو زیاد میکنه و میاد داخل برنامه شما فوت برنامه شما خیلی زیاد بزرگ میشه کدهای زیر که یه شخصی داخل سایت مرجع زده بودو برای رفع این مشکل رو براتون میزام البته با کمی تغییر و توضیح انشالله که مفید باشه. من چند بار این مطلب پرسیده بودم ولی متاسفانه گفتن راه حلی نداره داخل اندروید استدیو دستمون بازه و فکر کنم با sp یا dp میشه این مشکل حل کرد ولی داخل b4a من 2 سال بود چیزی پیدا نکردم البته روش های مثل اتوسایز لیبل هست ولی خوب این که میگم هم ی روشیه برا خودش و روش کلیش اینه که میاد مقیاس میگیره و نسبت به اون مقایش فونت پیش فرض کوچیک بزرگ میکنه #Region کد های مربوط به جلو گیری کردن از تغییر سایز فونت پیش فرض دستگاه 'ممکنه این کد باگ های مثل فریز شدن تو پروژه رو داشته باشه و سنگین باشه 'توجایی که خیلی ویو دارید شاید خیلی سنگ بشه 'و فورس کلوز کنه اپ 'البته چون داخل نخ استفاده کردیم شاید در نهایت نخ اجرا نشه 'لینک این مطلب داخل سایت مرجع : 'https://www.b4x.com/android/forum/threads/get-size-of-system-font-in-use.28065/#post-181853 'اگرم مشکلی داشتید به ایدی زیر داخل تل پیام بدید '@alimo1111 Sub StartTherad_DefulttFontSize Try Dim th As Thread th.Initialise("therdsetdefultfontsize") th.Start(Me,"SetDefulttFontSize",Null) Catch Log(LastException) End Try End Sub Private Sub therdsetdefultfontsize_Ended(endedOK As Boolean, error As String) 'The thread has terminated. If endedOK is False error holds the reason for failure ' Msgbox(error,endedOK) End Sub Sub SetDefulttFontSize Try Dim access_fonssize As Accessiblity Dim fscale As Double fscale = access_fonssize.GetUserFontScale 'این شرط زیر اگر برقرار باشه باعث میشه فونت تطبیق بیابه با کوچک شدن فونت دستگاه هم If fscale > 1 Then For Each v As View In Activity.GetAllViewsRecursive If v Is Label Then Dim lbl As Label = v lbl.TextSize = NumberFormat2(lbl.TextSize / fscale,1,0,0,False) ' خود ارل گفت کد زیر نیاز نیست ولی اگر برای باتون کار نکرد میتونید و کد های زیرم فعال کنید. ' Else If v Is Button Then ' Dim s As Button = v ' s.TextSize = NumberFormat2(s.TextSize / fscale,1,0,0,False) End If Next End If Catch Log(LastException) End Try End Sub 'این تابع هم به صورت دستی میره و سایز پیش فرض میگیره 'میتونید این مقدار رو بدید به ویتون به صورت زیر 'lbl.TextSize = Get_DefultTextsize(lbl.TextSize) Public Sub Get_DefultTextsize(TextSizeView As Float) As Float Try Dim access_fonssize As Accessiblity Dim fscale As Double fscale = access_fonssize.GetUserFontScale If fscale > 1 Then Return NumberFormat2(TextSizeView / fscale,1,0,0,False).As(Float) End If Return TextSizeView Catch Log(LastException) End Try End Sub #End Region البته شاید روشی از این بهتر باشه مثل اتوسایز لیبل اون رو هم تحقیق کنید. لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.