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

اضافه نمودن یک View به اکتیویتی باز داخل کلاس


arman888

سوال

با درودو ادب خدمت مهندسان گرامی

میخاستم کلاسی بسازم با مشخصات زیر 

داخل کلاس دو تا View داشته باشم ( یکی Label و دیگری Listview)

به این ترتیب میخام کد بنویسم که اول از داخل اکتیویتی Label رو Initiate کنم و با استفاده از دستور Activity. addview(....) اون Label رو به اکتیویتی اضافه کنم

تا اینجاش حل ه

مشکله من اینجاس که میخام وقتی اون Label داخل Activity اضافه و Initiate شد، اون List view هم در همان موقعیت از نظر فاصله از چپ و طول و فاصله از بالا  نمایش داده بشه

این تیکه رو چیکار باید بکنم

 

ممنون از همه

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

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

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

سلام به شما. هنوز مهندس نشدم:)

 

دقیقا منظورتونو متوجه نشدم.ولی اگه می خواید وقتی لیبل اضافه شد، اندازه های لیست ویو تغییر کنه، مثل کد زیر عمل کنید:

(Listview.setlayout(2%x,1%y,96%x,99%y

عدد اول میشه فاصله از چپ

عدد دوم میشه فاصله از بالا

عدد سوم میشه عرض لیست ویو

عدد چهارم هم میشه ارتفاعش

اگر خواستید اندازه هاشو با اندازه های لیبل مساوی قرار بدید میتونید مثلا تیکه کد زیر رو به جای عدد اول کد بالا بنویسید:

Label.left

اگر هم دوست داشتید لیست ویوتون، اندازه هاش با یه انیمیشن تغییر کنه میتونید از کد زیر استفاده کنید:

Listview.setlayoutanimated(300,2%x,1%)y,96%x,99%y

(پرانتزهاش درست نمیفته)

اینجا عدد اول میشه مدت زمان تغییر اندازه که به میلی ثانیه هست.

سوالی در این مورد بود بپرسید:)

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

در در 1 شهریور 1398 در 20:06، peyman128 گفته است :

سلام به شما. هنوز مهندس نشدم:)

 

دقیقا منظورتونو متوجه نشدم.ولی اگه می خواید وقتی لیبل اضافه شد، اندازه های لیست ویو تغییر کنه، مثل کد زیر عمل کنید:

(Listview.setlayout(2%x,1%y,96%x,99%y

عدد اول میشه فاصله از چپ

عدد دوم میشه فاصله از بالا

عدد سوم میشه عرض لیست ویو

عدد چهارم هم میشه ارتفاعش

اگر خواستید اندازه هاشو با اندازه های لیبل مساوی قرار بدید میتونید مثلا تیکه کد زیر رو به جای عدد اول کد بالا بنویسید:

Label.left

اگر هم دوست داشتید لیست ویوتون، اندازه هاش با یه انیمیشن تغییر کنه میتونید از کد زیر استفاده کنید:

Listview.setlayoutanimated(300,2%x,1%)y,96%x,99%y

(پرانتزهاش درست نمیفته)

اینجا عدد اول میشه مدت زمان تغییر اندازه که به میلی ثانیه هست.

سوالی در این مورد بود بپرسید:)

ببینسد منظورم اینه

کلاسی بسازم که از طریق اون لیبل ی و با ابعاد مورد نظر به اکتیویتی اضافه کنم

تا اینجاش که خیلی راحته

مشکل من اینه کهوقتی اون لیبل initiate شد

داخل کلاس نه اکتیویتی، یه لیست ویو هم به اکتسویتی اضافه شه

 

دقیقا میدونین میخام چسکار کنم؟

میخام یه spinner  سفارشی برا خودم بسازم که ازادی عمل داشته باشم

با کلیلک روی لیبل دقیقا زیرش لیست وییو نمایش داده شه و با کلیک دوباره محو شه

 

اما میخان از طریق کلاس انجام بدم

داخل اکتیویتی راحته میشه انجام داد میخام کلاس کنم که کاربری عمومی داشته باشه

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

سلام اگر منظورتونو درست متوجه شده باشم، می تونید از کدهای زیر استفاده کنید:

 

کدهایی که باید توی اکتیویتی باشه:

Sub Globals
	Dim MainPnl As Panel
	Dim NextLbl As Label
	Dim AddingClass As AddingViewClass
End Sub

Sub Activity_Create(FirstTime As Boolean)
	MainPnl.Initialize("MainPnl")
	Activity.AddView(MainPnl,0,0,100%x,100%y)
	AddingClass.Initialize
	AddingClass.AddingLblView(MainPnl,2%x,2%y,96%x,7%y)
	NextLbl.Initialize("NextLbl")
	MainPnl.AddView(NextLbl,2%x,2%y,96%x,7%y)
End Sub

Sub NextLbl_Click
	AddingClass.Lbl_Click
End Sub

 

 

کدهایی که باید داخل class باشه:

 

Private Sub Class_Globals
	Private Lbl As Label
	Private ListV As ListView
	Private AddingLblBool As Boolean = False
	Private LblSizes(4) As Int
	Private AddingPnl As Panel
End Sub

Public Sub Initialize
	
End Sub

Sub AddingLblView(Panel As Panel,Left As Int,Top As Int,Width As Int,Height As Int)
	If Lbl.IsInitialized = False Then
		Lbl.Initialize("Lbl")
		Panel.AddView(Lbl,Left,Top,Width,Height)
		Lbl.Color = Colors.White
		AddingLblBool = True
		LblSizes(0) = Left
		LblSizes(1) = Top
		LblSizes(2) = Width
		LblSizes(3) = Height
		AddingPnl = Panel
	Else
		Panel.RemoveAllViews
		Lbl.Initialize("Lbl")
		Panel.AddView(Lbl,Left,Top,Width,Height)
		AddingLblBool = True
		LblSizes(0) = Left
		LblSizes(1) = Top
		LblSizes(2) = Width
		LblSizes(3) = Height
		AddingPnl = Panel
	End If
End Sub

Sub Lbl_Click
	If ListV.IsInitialized = False Then
		If AddingLblBool = True Then
			ListV.Initialize("ListV")
			AddingPnl.AddView(ListV,LblSizes(0),LblSizes(1)+LblSizes(3)+1%y,LblSizes(2),LblSizes(3))
			ListV.Color = Colors.Blue
		End If
	Else
		If ListV.Visible = False Then
			ListV.Visible = True
		Else
			ListV.Visible = False
		End If
	End If
End Sub

 

 

اسم Class رو هم AddingViewClass گذاشتم.

 

این کدهارو تست کنید و نتیجش رو اگه دوست داشتید بهم بگید:)

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

در در 6 شهریور 1398 در 22:21، peyman128 گفته است :

سلام اگر منظورتونو درست متوجه شده باشم، می تونید از کدهای زیر استفاده کنید:

 

کدهایی که باید توی اکتیویتی باشه:


Sub Globals
	Dim MainPnl As Panel
	Dim NextLbl As Label
	Dim AddingClass As AddingViewClass
End Sub

Sub Activity_Create(FirstTime As Boolean)
	MainPnl.Initialize("MainPnl")
	Activity.AddView(MainPnl,0,0,100%x,100%y)
	AddingClass.Initialize
	AddingClass.AddingLblView(MainPnl,2%x,2%y,96%x,7%y)
	NextLbl.Initialize("NextLbl")
	MainPnl.AddView(NextLbl,2%x,2%y,96%x,7%y)
End Sub

Sub NextLbl_Click
	AddingClass.Lbl_Click
End Sub

 

 

کدهایی که باید داخل class باشه:

 


Private Sub Class_Globals
	Private Lbl As Label
	Private ListV As ListView
	Private AddingLblBool As Boolean = False
	Private LblSizes(4) As Int
	Private AddingPnl As Panel
End Sub

Public Sub Initialize
	
End Sub

Sub AddingLblView(Panel As Panel,Left As Int,Top As Int,Width As Int,Height As Int)
	If Lbl.IsInitialized = False Then
		Lbl.Initialize("Lbl")
		Panel.AddView(Lbl,Left,Top,Width,Height)
		Lbl.Color = Colors.White
		AddingLblBool = True
		LblSizes(0) = Left
		LblSizes(1) = Top
		LblSizes(2) = Width
		LblSizes(3) = Height
		AddingPnl = Panel
	Else
		Panel.RemoveAllViews
		Lbl.Initialize("Lbl")
		Panel.AddView(Lbl,Left,Top,Width,Height)
		AddingLblBool = True
		LblSizes(0) = Left
		LblSizes(1) = Top
		LblSizes(2) = Width
		LblSizes(3) = Height
		AddingPnl = Panel
	End If
End Sub

Sub Lbl_Click
	If ListV.IsInitialized = False Then
		If AddingLblBool = True Then
			ListV.Initialize("ListV")
			AddingPnl.AddView(ListV,LblSizes(0),LblSizes(1)+LblSizes(3)+1%y,LblSizes(2),LblSizes(3))
			ListV.Color = Colors.Blue
		End If
	Else
		If ListV.Visible = False Then
			ListV.Visible = True
		Else
			ListV.Visible = False
		End If
	End If
End Sub

 

 

اسم Class رو هم AddingViewClass گذاشتم.

  

این کدهارو تست کنید و نتیجش رو اگه دوست داشتید بهم بگید:)

مرسی دوست عزیز از وقتی که گذاشتی

اره تقریبا همین کد و ومیخاستم 

اما چطوری میتونم از اکتیویتی Main به ListV داخل کلاس دسترسی پیدا کنم و مثلا از دیتا بیس یه سری اطلاعات و بپیرم و داخل اون ListV نمایش بدم

که وقتی Lbl کلیک شد اون  ListV با اطلاعات فراخوانی شده از دیتا بیس نمایش داده شود

 

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

بایگانی شده

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

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

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