رفتن به مطلب
  • 0

CharSequence ، label و scrollview


rasool.g

سوال

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

Dim su As StringUtils
Label1.Height = su.MeasureMultilineTextHeight(Label1, Label1.Text)

ولی زمانی که متن از نوع rich string و CharSequence باشه و از قسمت های مختلف با استایل ها و فونت سایز های متفاوت تشکیل شده باشه این کد طبیعتا جواب نمیده.

من سعی کردم از wrap_content یعنی -2 برای عرض استفاده کنم. عرض لیبل تنظیم و برابر با متن میشه ولی عرض داخلی اسکرول ویوو تنظیم نمیشه.

راه حلی برای این مشکل وجود داره؟

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

3 پاسخ به این سوال تاکنون داده شده است

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

خب میتونید بعد از اینکه عرض لیبل رو با -2 تنظیم کردید، عرض اسکرول ویو رو برابر عرض لیبل قرار بدید.

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

در 2 ساعت قبل، AMiN.M7892 گفته است :

خب میتونید بعد از اینکه عرض لیبل رو با -2 تنظیم کردید، عرض اسکرول ویو رو برابر عرض لیبل قرار بدید.

سلام. امتحان کردم.

عرض پنل اسکرول ویوو هم میشه در اون صورت -2 و بازم کار نمیکنه

	sv.Initialize(-2)
	
	Activity.AddView(sv,0,0,100%x,100%y)
	
	lb1.Initialize("lb1")
	
	Dim cs As CSBuilder
	cs.Initialize
	cs.Append("start").Append(CRLF)
	For i=0 To 100
		cs.Color(Colors.Red).Append(i).Pop.Append(CRLF)
	Next
	cs.Append("end")
	
	lb1.Text = cs
    
	Dim bc As ColorDrawable
	bc.Initialize(Colors.LightGray,0)
	lb1.Background = bc

	sv.Panel.AddView(lb1,0,0,-1,-2)
	
	sv.Panel.Height = lb1.Height
	
	Log(sv.Panel.Height) ' =  -2
End Sub

البته اینجا سایز و استایل متن رو تغییر ندادم و میشه از همون متد استفاده کرد ولی مشکل وقتیه که استایل و سایز متن در قسمت های مختلف متفاوت باشه

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

این جور که من فهمیدم تنها راه موجود ظاهرا استفاده از کتابخانه XmlLayoutBuilder هستش.

یعنی استفاده از لایوت های xml در پنل یا اکتیویتی.

کتابخونه ساده و قدرت مندی هستش و میشه بسیاری از محدودیت های b4a رو باهاش رفع کرد.

#Region  Project Attributes 
	#ApplicationLabel: LabelHeight
	#VersionCode: 1
	#VersionName: 
	'SupportedOrientations possible values: unspecified, landscape or portrait.
	#SupportedOrientations: unspecified
	#CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes 
	#FullScreen: False
	#IncludeTitle: True
#End Region

#AdditionalRes: ..\\res

Sub Process_Globals

End Sub

Sub Globals

End Sub

Sub Activity_Create(FirstTime As Boolean)
	
	Dim p As Panel
	p.Initialize("p")
	Activity.AddView(p,0,25%y,100%x,50%y)
	
	Dim x As XmlLayoutBuilder
	x.LoadXmlLayout(p, "layou1")
	
	Dim cs As CSBuilder
	cs.Initialize
	cs.Append("start").Append(CRLF)
	For i=0 To 50
		cs.Size(22).Color(Colors.Red).Append(i).PopAll.Append(CRLF)
	Next
	For i=0 To 50			
    cs.Typeface(Typeface.FONTAWESOME).Size(16).Bold.Color(Colors.Green).Append(i).Append(Chr(0xF058)).PopAll.Append(CRLF)
	Next
	For i=0 To 50
		cs.Strikethrough.Color(Colors.Red).Append(i).PopAll.Append(CRLF)
	Next
	cs.Underline.Append("end")
	
	Dim lb1 As Label
	lb1 = x.GetView("lb1")

	lb1.Text = cs
	
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub lb1e_Click
	ToastMessageShow("lb1_Click",False)
End Sub

Sub lb1e_LongClick
	ToastMessageShow("lb1_LongClick",False)
End Sub

res/layout/layout1.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
	android:background="@color/white">
    <ScrollView
        android:id="@+id/sv1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:scrollbars="vertical"
        android:fillViewport="true"
		android:background="@color/white">
        <TextView
            android:id="@+id/lb1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
			android:padding="10dp"
			android:background="@color/white"
			android:textColor="@color/black"
			android:tag="lb1e"
			/>
    </ScrollView>
</LinearLayout>

از  tag برای رویداد استفاده میشه

android:tag="lb1e"
Sub lb1e_Click
	ToastMessageShow("lb1_Click",False)
End Sub

res/values/colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
	
	<color name="actionButton">#bbbbbb</color>
	<color name="windowBackground">#fafafa</color>
	<color name="textLight">#dddddd</color>
	<color name="textMedium">#999999</color>
	<color name="textColor">#444444</color>
	<color name="divider">#dddddd</color>

	<color name="tabTextDefault">#afff</color>
	<color name="tabTextSelected">#fff</color>

	<color name="headerBackground">#eeeeee</color>

	<color name="selectedItemBackground">#aaaaaa</color>
	  <color name="colorPrimary">#607d8b</color>
    <color name="colorPrimaryDark">#455a64</color>
    <color name="colorPrimaryLight">#cfd8dc</color>
    <color name="colorAccent">#ffc107</color>

    <color name="white">#ffffffff</color>
    <color name="black">#000000</color>
    <color name="black_light">#99444444</color>
    <color name="gray_dark">#616161</color>
    <color name="gray_light">#9e9e9e</color>
    <color name="brown">#5d4037</color>

    <color name="indicator_1">#55B3C2</color>
    <color name="indicator_2">#64A4A4</color>
    <color name="indicator_3">#66D7B9</color>
    <color name="indicator_4">#FDBC7D</color>
    <!--Indigo 500-->
    <color name="primary_500">#3F51B5</color>
    <!--Indigo 700-->
    <color name="primary_700">#303F9F</color>
    <!--Pink 500-->
    <color name="accent_500">#E91E63</color>
    <!--Pink 700-->
    <color name="accent_700">#C2185B</color>
    <color name="black_trans80">#14000000</color>

    <color name="indicator_unselected">#4D000000</color>
    <color name="wite">#ffffff</color>
    <color name="blue_grey">#455A64</color>
    <color name="red">#F44336</color>
    <color name="pink">#E91E63</color>
    <color name="purple">#9C27B0</color>
    <color name="deep_purple">#673AB7</color>
    <color name="indigo">#3F51B5</color>
    <color name="blue">#2196F3</color>
    <color name="light_blue">#03A9F4</color>
    <color name="cyan">#00BCD4</color>
    <color name="teal">#009688</color>
    <color name="green">#4CAF50</color>
    <color name="light_green">#8BC34A</color>
    <color name="lime">#CDDC39</color>
    <color name="yellow">#FFEB3B</color>
    <color name="amber">#FFC107</color>
    <color name="orange">#FF9800</color>
    <color name="deep_orange">#FF5722</color>
    <color name="main">#FF4081</color>
    <color name="window_background">#FFF5F5F5</color>

</resources>

 

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

بایگانی شده

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

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

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