با سلام و سپاس خدمت کاربران عزیز سایت یاهو ۹۸ YAHOO
با افتتخاری دیگر سورسی رو به شما ارائه میدهیم که خیلی کاربردی میباشد.
اگر در بیسیک۴اندروید از 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