رفتن به مطلب

آموزش ellipsize کردن یا کوتاه کردن دستی متن برای لیست ویوو


rasool.g

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

'txt = "wg qdgh qdgqwh gdhwqg dhgwq dgwqjh gdjhwq gjhwqg jhwqg jgwq gdjh gdhg jhwdg wqjhd gwqjh dg wda dwa d ad"
txt = " " & Chr(0xF114) & " " & "لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. "
'txt = "لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. "

  Dim l1,l2 As Label
  l1.Initialize("l1")
  l2.Initialize("l2")
  Activity.AddView(l1,0,0,100%x,10%y)
  Activity.AddView(l2,0,10%y,100%x,10%y)
  l1.TextSize = 20
  l2.TextSize = 20
  l1.Typeface = Typeface.FONTAWESOME
  l2.Typeface = Typeface.FONTAWESOME
  l1.Gravity = Gravity.RIGHT + Gravity.CENTER_VERTICAL
  l2.Gravity = Gravity.RIGHT + Gravity.CENTER_VERTICAL
  l1.SingleLine = True
  l2.SingleLine = True
  l1.Ellipsize = "END"
  l2.Ellipsize = "NONE"
  l1.Text = Chr(0x202b)& txt &Chr(0x202c)
  l2.Text = Chr(0x202b)& txt &Chr(0x202c)

  Dim lv1 As ListView
  lv1.Initialize("lv1")
  Activity.AddView(lv1,0,20%y,100%x,20%y)
  lv1.SingleLineLayout.Label.TextSize = 20
  lv1.SingleLineLayout.Label.Typeface = Typeface.FONTAWESOME
  lv1.SingleLineLayout.Label.SingleLine = True
  lv1.SingleLineLayout.Label.Gravity = Gravity.RIGHT + Gravity.CENTER_VERTICAL
  lv1.SingleLineLayout.Label.Color = Colors.Gray
  'lv1.SingleLineLayout.Label.Padding = Array As Int (10dip, 10dip, 10dip, 10dip)
  'lv1.Padding = Array As Int (0dip, 0dip, 0dip, 0dip)
  lv1.Color = Colors.White

  lv1.SingleLineLayout.Label.Width = lv1.Width - 10dip 'or (- lv1.SingleLineLayout.Label.Left)
  Dim maxTL As Int = 5

  lv1.AddSingleLine( Chr(0x202b)& txt &Chr(0x202c) )

  Dim maxWidth As Int = lv1.Width - 10dip' - 20dip 
  maxWidth = maxWidth * 0.95

  Dim Canvas1,c1 As Canvas

  c1.Initialize(Activity)
  Dim b As Bitmap
  b.InitializeMutable(1dip,1dip)
  Canvas1.Initialize2(b)

  'c1.DrawText(txt, 0, 10%y, l1.Typeface, 20, Colors.White, "LEFT")

  Dim maxTL As Int = 2
  For i = txt.Length To 5 Step -1
  Log(i)
  If c1.MeasureStringWidth(txt.SubString2(0,i) & "...",l1.Typeface,20) <= maxWidth Then
  maxTL = i
  Exit
  End If
  Next
  Log(maxTL)

  l2.Text = Chr(0x202b)&txt.SubString2(0,maxTL) & "..."&Chr(0x202c)
  lv1.AddSingleLine(Chr(0x202b) &txt.SubString2(0,maxTL) & "..."&Chr(0x202c))

  c1.DrawText("["&txt.SubString2(0,maxTL)&"...]", 0, 60%y, l1.Typeface, 20, Colors.White, "LEFT")
  c1.DrawText(txt.SubString2(0,maxTL)&"...", 0, 80%y, l1.Typeface, 20, Colors.White, "LEFT")

  Log("-----")

 

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

برای اندازه گیری در کد بالا از Canvas1 هم می تونید استفاده کنید.

مقدار Step در حلقه رو برای افزایش سرعت میشه بیشتر کرد.

Chr(0x202b) و Chr(0x202c) رو فقط برای راست به چپ کردن گذاشتم.

 

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

بایگانی شده

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

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

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