حل مشکل StringUtils در تنظیم ارتفاع لیبل و اسکرول ویو B4A


حل مشکل StringUtils در تنظیم ارتفاع لیبل و اسکرول ویو B4A
۳ اردیبهشت ۱۴۰۱
146 بازدید
نویسنده:

اگر در بیسیک۴اندروید از StringUtils و تابع MeasureMultilineTextHeight برای تنظیم ارتفاع لیبل و اسکرول ویو استفاده کرده باشید شاید متوجه‌ی مشکلاتی شده باشید و یا ممکنه در آینده به این مشکلات برخورد کنید. پس این پست رو از دست ندید…

 

 

❓ مشکل StringUtils چیه؟

 

۱- اگر برای لیبل موردنظرمون از کتابخانه هایی مثل RichString برای تغییر رنگ و سایز بخش هایی از متن استفاده کنیم دیگه تابع تنظیم ارتفاع StringUtils درست عمل نمیکنه!

۲- اگر از تابع setLineSpacing برای تنظیم فاصله بین خطوط لیبل استفاده کنیم دیگه StringUtils درست عمل نمیکنه و فاصله بین خطوط رو در نظر نمیگیره

۳- مشکلات این چنینی دیگه…

 

 

✅ راه حل این مشکل

 

❌ از کد زیر برای تنظیم ارتفاع Label و scrollview در بیسیک۴اندروید استفاده نکنید!

 

 Dim su As StringUtils
lbtext.Height=su.MeasureMultilineTextHeight(lbtext,lbtext.Text)
ScrollView1.Panel.Height=lbtext.Height

 

✅ و بجاش از روش زیر استفاده کنید:

۱- کد جاوا زیر رو خارج از sub ها قرار بدید

 

#if JAVA
import android.text.StaticLayout;
import android.text.Layout.Alignment;
import android.widget.TextView;
public int MeasureMultilineTextHeight(TextView Label) {
StaticLayout sl = new StaticLayout(Label.getText(), Label.getPaint(),
Label.getLayoutParams().width - Label.getPaddingLeft() - Label.getPaddingRight(),
Alignment.ALIGN_NORMAL, 1, 0 , true);
return sl.getLineTop(sl.getLineCount());
}
#end if

 

۲- کتابخانه JavaObject رو تیک بزنید و تابع جاوا بالا رو فراخوانی کنید و بجای label1 و scrollview1 اسم لیبل و اسکرول ویو خودتون رو جایگذاری کنید:

 

 Dim j As JavaObject
j.InitializeContext
label1.Height=j.RunMethod("MeasureMultilineTextHeight",Array(label1))
ScrollView1.Panel.Height=label1.Height

 

 

موفق باشید❤️


آموزش برنامه نویسی اندروید

پژمان نیکروان
پژمان نیکروان

پژمان نیکروان هستم؛ مدیر وب سایت کافه توسعه، شروع فعالیتم به برنامه نویسی از سال 1392 بوده و هدف از ایجاد وبسایت اشتراک گذاری تجارب خودم و دیگر برنامه نویسان هست.

ارسال دیدگاه

می توانید از تگ های HTML نیز استفاده کنید :
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

هیچ دیدگاهی وجود ندارد!