09-04-2013، 01:27 AM
(09-03-2013، 04:18 PM)'mhr74' نوشته: درود دوستان من یک متن را از یک فایل تکست با یک لیبل و اسکرول لود کردم به دلیل نوع فونتم باید فاصله ی خط ها را از هم بیشتر کنم یک سرچ کردم از روش زیر استفاده کردم فاصله ی بین خط ها را زیاد می کند ولی ارتفاعی که در آخر می ده اشتباه است باید چه کار کنم؟ روش دیگه ای هست؟ ممنون http://www.basic4ppc.com/android/forum/t...ost-147568درود
داداشی خب اگه یکم تغییرات تو کد ایجاد میکردی مشکل حل میشد
بفرما عزیزم
کد پیاچپی:
Sub Globals
Dim MeasureLabel As Label
Dim su As StringUtils
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("main")
MeasureLabel.Initialize("")
Activity.AddView(MeasureLabel,60dip,60dip,100dip,100dip)
Dim Obj2 As Reflector
MeasureLabel.Text="bxcbg dkj tkjbtkbdflg gdfkthjn bljhb lhjsdb thb lodbltkjbdlbgl dftldjbgljd bfljby ldjby"
Msgbox( su.MeasureMultilineTextHeight(MeasureLabel, MeasureLabel.Text),"Text Height 1")
Obj2.Target = MeasureLabel
Obj2.RunMethod3("setLineSpacing", 1, "java.lang.float", 2, "java.lang.float")
Msgbox(su.MeasureMultilineTextHeight(MeasureLabel, MeasureLabel.text),"Text Height 2")
Msgbox(TextHeight(MeasureLabel,MeasureLabel.Text),"Text Height 3")
MeasureLabel.Height=TextHeight(MeasureLabel,MeasureLabel.Text)
End Sub
Sub TextHeight( v As View,txt As String)
Dim RLabel As Label :RLabel.Initialize("")
Dim rowheight As Int = su.MeasureMultilineTextHeight(v,txt)
Dim Obj1 As Reflector
Obj1.Target = RLabel
Dim before As Int = Obj1.RunMethod("getLineHeight") 'Get the height of line BEFORE you change it
Obj1.Target = RLabel
Obj1.RunMethod3("setLineSpacing", 0, "java.lang.float", 1.5, "java.lang.float") 'Change the space between lines
Obj1.Target = RLabel
Dim after As Int = Obj1.RunMethod("getLineHeight") 'Get the height of line AFTER you change it
Return ((after * rowheight)/before) + 20dip 'Add 20dip to have some space below the text.
End Sub
ابتدا برنامه یه لیبل میسازه و یه متنی رو داخلش میذاره که اندازش بزرکتر از لیبل هست
اما با کد su.MeasureMultilineTextHeight میشه تشخیص داد که ارتفاعش چقدره
خب حالا میخوایم کدی بنویسیم که فاصله بین خط هارو زیاد کنه
با زیاد کردن فاصله بین خطها ،درصورتی که بخوایم ارتفاع کاملش رو بدست بیاریم، اگر باز از کد su.MeasureMultilineTextHeight استفاده کنیم بازهم جواب قبلی رو برمیگردونه در صورتی که باید یه عدد بزرگتری بهمون بده
من یه تابع TextHeight ایجاد کردم که ارتفاع واقعی رو برمیگردونه
اگه سوالی بود در خدمتم
تمام تاریخ عبارت است از جنگ سربازانی که همدیگر را نمیشناسندو با هم میجنگند برای دو نفر که همدیگر را میشناسند و نمیجنگند