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

مشکل عمل نکردن ScrollPosition در اسکرول ویو


ali8008

سوال

سلام دوستان

من تو یکی از برنامه هام در صفحه ی منو اصلی چند تا آیتم دارم که وقتی کابر روش کلیک میکنه به صفحه مخصوص اون آیتم میره . آیتم هام هم زیاده و داخل اسکرول ویو قرار گرفته. حالا میخوام مثلا وقتی کاربر روی یه ایتم در انتهای اسکرول ویو کلیک کرد و رفت به صفحه دیگه، وقتی دوباره برگشت اسکرول تو همون پوزیشن قبلی یعنی انتهای صفحه باشه.

من از کد زیر استفاده کردم ولی جواب نداد *عطسه*

Sub Process_Globals
   Dim LastPosition As Int
End Sub

Sub Scrollview1_ScrollChanged(Position As Int)
   LastPosition = Position
End Sub

Sub Activity_Resume
   ScrollView1.ScrollPosition = LastPosition
   DoEvents
End Sub

حالا چی کار کنم ؟؟؟ *گریه**گریه**گریه*

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

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

درود

بنده تست کردم . توی Resume جواب نمیده.

شما این کارو انجام بدید جواب میگیرید:

یک timer رو تعریف کنید و توی همون resume هم اون رو initialize و enabled=true کنید. زمان رو هم براش بر فرض 1 ثانیه در نظر بگیرید

توی کد مربوط به ScrollView1.ScrollPosition = LastPosition رو توی تایمر قرار بدید و بعد از اون هم تایمر رو enabled=false کنید.

مشکل حل میشه.

موفق باشید

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

داداش من تا جایی که فهمیدم نوشتم لطف کنین ببینین کجاش مشکل داره!


Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.

End Sub

Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim cur1 As Cursor
Dim TextSetting1 As TextSetting
Private Label1 As Label
Private ScrollView1 As ScrollView
Private Label2 As Label
Private ImageView1 As ImageView
Private ImageView2 As ImageView
Private Button1 As Button
Private Button2 As Button
Private ImageView4 As ImageView
Private ImageView3 As ImageView
Dim timer1 As Timer
End Sub

Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
Dim verticalPosition As String = "bottom" '"top" or "bottom"
Dim horizontalPosition As String = "center" '"left", "right" or "center"
Dim r As Reflector
Dim args(3) As Object = Array As Object(r.GetActivity, verticalPosition, horizontalPosition)
Dim types(3) As String = Array As String("android.app.Activity", "java.lang.String", "java.lang.String")
r.RunStaticMethod("ir.adad.AdadB4APlugin", "createAdView", args, types)

Activity.LoadLayout("emanmatn")
Dim Label1 As Label
Label1.Initialize("")
TextSetting1.Initialize()
ScrollView1.Panel.AddView(Label1,5,5,90%x,95%y)
If File.Exists(File.DirInternal,"FontType.txt") = False Then
File.Copy(File.DirAssets,"FontType.txt",File.DirInternal,"FontType.txt")
End If
If File.Exists(File.DirInternal,"FontSize.txt") = False Then
File.Copy(File.DirAssets,"FontSize.txt",File.DirInternal,"FontSize.txt")
End If
If File.Exists(File.DirInternal,"lineheight.txt") = False Then
File.Copy(File.DirAssets,"lineheight.txt",File.DirInternal,"lineheight.txt")
End If

cur1 = eman.sql1.ExecQuery("SELECT matn FROM emann WHERE list ='" &eman.meghdar & "'")

For i = 0 To cur1.RowCount-1
cur1.Position = i
Label1.text = cur1.GetString("matn")
Label1.TextColor = Colors.Black
Label1.Typeface = Typeface.LoadFromAssets(File.ReadString(File.DirInternal,"FontType.txt")&".TTF")




TextSetting1.LongText(Label1,Label1.text,25,ScrollView1,1)

Next
End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub


Sub ImageView1_Click
Dim i As Intent
Dim s As String
s = Label1.Text
i.Initialize(i.ACTION_SEND, "")
i.SetType("text/plain")
i.PutExtra("android.intent.extra.TEXT", s)
i.WrapAsIntentChooser("Share...")
StartActivity(i)
End Sub
Sub ImageView2_Click
StartActivity("Setting")
End Sub

Sub Activity_Resume
timer1.initialize("timer1",0)
timer1.enabled=True
ScrollView1.ScrollPosition = LastPosition
timer1.enabled=False
End Sub

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

[TABLE="width: 500"]
[TR]
[TD]#Region  Activity Attributes 
   #FullScreen: False
   #IncludeTitle: False
#End Region

Sub Process_Globals

   Dim t As Timer

Dim FontSize As String
   Dim FontType As String
   Dim LineHeight As String
End Sub

Sub Globals
   'These global variables will be redeclared each time the activity is created.
   'These variables can only be accessed from this module.

   Dim b As Button
   Dim LastScroll As Int
   Dim cur1 As Cursor
   Dim TextSetting1 As TextSetting
   Private Label1 As Label
   Private ScrollView1 As ScrollView
   Private Label2 As Label
   Private ImageView1 As ImageView
   Private ImageView2 As ImageView
   Private Button1 As Button
   Private Button2 As Button
   Private ImageView4 As ImageView
   Private ImageView3 As ImageView
   Dim timer1 As Timer 
   Private SeekBar1 As SeekBar
   Dim LastScroll As Int
   Private sv As ScrollView
End Sub

Sub Activity_Create(FirstTime As Boolean)
   'Do not forget to load the layout file created with the visual designer. For example:





   Dim verticalPosition As String = "bottom" '"top" or "bottom"
   Dim horizontalPosition As String = "center" '"left", "right" or "center"
   Dim r As Reflector 
   Dim args(3) As Object = Array As Object(r.GetActivity, verticalPosition, horizontalPosition)
   Dim types(3) As String = Array As String("android.app.Activity", "java.lang.String", "java.lang.String")    
   r.RunStaticMethod("ir.adad.AdadB4APlugin", "createAdView", args, types)

   Activity.LoadLayout("gharibematn")
   ScrollView.Panel.AddView(b,50%x,sv.Height,sv.Width / 2 , 15%y)

   Dim Label1 As Label
   Label1.Initialize("")
   TextSetting1.Initialize()
   ScrollView1.Panel.AddView(Label1,5,5,90%x,95%y)
       If File.Exists(File.DirInternal,"FontType.txt") = False Then
       File.Copy(File.DirAssets,"FontType.txt",File.DirInternal,"FontType.txt")
   End If
   If File.Exists(File.DirInternal,"FontSize.txt") = False Then
       File.Copy(File.DirAssets,"FontSize.txt",File.DirInternal,"FontSize.txt")
   End If
   If File.Exists(File.DirInternal,"lineheight.txt") = False Then
       File.Copy(File.DirAssets,"lineheight.txt",File.DirInternal,"lineheight.txt")
   End If
   Label2.Color = Colors.White
   cur1 = gharibe.sql1.ExecQuery("SELECT matn FROM gharibee WHERE list ='" &gharibe.meghdar & "'")

   For i = 0 To cur1.RowCount-1
       cur1.Position = i
   Label1.text = cur1.GetString("matn")
   Label1.TextColor = Colors.Black
   Label1.Typeface = Typeface.LoadFromAssets(File.ReadString(File.DirInternal,"FontType.txt")&".TTF")

   TextSetting1.LongText(Label1,Label1.text,25,ScrollView1,1)
   FontSize = File.ReadString(File.DirInternal,"FontSize.txt")
   Next

End Sub
Sub Activity_Resume

t.Initialize("t",1000)
t.Enabled = True
End Sub
Sub Activity_Pause (UserClosed As Boolean)

End Sub  


Sub t_Tick
ScrollView1.Initialize("")
   ScrollView1.ScrollPosition = LastScroll
End Sub

Sub sv_ScrollChanged(Position As Int)
ScrollView1.Initialize("")
   LastScroll = Position
   t.Enabled = False
End Sub

Sub ImageView1_Click
   Dim i As Intent
Dim s As String
  s = Label1.Text
  i.Initialize(i.ACTION_SEND, "")
  i.SetType("text/plain")
  i.PutExtra("android.intent.extra.TEXT", s)
  i.WrapAsIntentChooser("Share...")
  StartActivity(i)
End Sub
Sub ImageView2_Click
   StartActivity("Setting")
End Sub


Sub Button1_Click
   Label1.TextColor = Colors.White
   ImageView3.Enabled=False
   ImageView3.Visible=False
   ImageView4.Enabled=True
   ImageView4.Visible=True

End Sub
Sub Button2_Click
Label1.TextColor = Colors.Black
   ImageView3.Enabled=True
   ImageView3.Visible=True
   ImageView4.Enabled=False
   ImageView4.Visible=False

End Sub


Sub SeekBar1_ValueChanged (Value As Int, UserChanged As Boolean)
   Label1.TextSize = Value
   FontSize = Value
End Sub

[/TD]
[/TR]
[/TABLE]


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

ببخشید شما دارید با ScrollView1 کار میکنید اونوقت چرا مقدار Postion مربوط به sv رو میگیرید؟

و چرا حی ScrollView1 رو اینیشیالیز می کنید؟

و یکجا هم دارید باتون ادد می کنید به ScrollView در حالی که ScrollView1 هستش؟

برای رفعش بیا کد :

[/b][b]ScrollView1.Initialize("")[/b][b]

رو از رویداد تایمر و ScrollChange مربوط به sv پاک کن.بعد بیا کد رو در رویداد ScrollChnaged مربوط به ScrollView1 بنویسید ببینید مشکلتون حل میشه.

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

سلام

شما باید Position اسکرول رو ار ظریق رویداد ScrollCHanged داخل یک متغییر بریزید . و در مرحله بعدی به وسیله رویداد Tick تایمر بایید Position اسکرول رو قرار بدید و بعد تایمر رو غیر فعال کنید.

و در رویداد Resume تایمر رو اینیشیالیز کنید سپس فعال.

اینم نمونه کار:

رمز فایل : basic4android.org

Save Scroll View(www.basic4android.org).rar

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

درود

بنده از شما یک خواهشی دارم . میخوام یک بار دیگه کامل توضیح بدید که چه کاری رو میخواهید انجام بدید؟

هیچ نوع کد نویسی رو نگید . فقط فارسی تایپ کنید و بگید که دقیقا چه عملی رو میخواهید انجام بدید؟

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

[TABLE=class: outer_border, width: 500]

[TR]

[TD]#Region Activity Attributes

#FullScreen: False

#IncludeTitle: False

#End Region

Sub Process_Globals

Dim t As Timer

Dim FontSize As String

Dim FontType As String

Dim LineHeight As String

End Sub

Sub Globals

'These global variables will be redeclared each time the activity is created.

'These variables can only be accessed from this module.

Dim b As Button

Dim LastScroll As Int

Dim cur1 As Cursor

Dim TextSetting1 As TextSetting

Private Label1 As Label

Private ScrollView1 As ScrollView

Private Label2 As Label

Private ImageView1 As ImageView

Private ImageView2 As ImageView

Private Button1 As Button

Private Button2 As Button

Private ImageView4 As ImageView

Private ImageView3 As ImageView

Dim timer1 As Timer

Private SeekBar1 As SeekBar

Dim LastScroll As Int

End Sub

Sub Activity_Create(FirstTime As Boolean)

'Do not forget to load the layout file created with the visual designer. For example:

Dim verticalPosition As String = "bottom" '"top" or "bottom"

Dim horizontalPosition As String = "center" '"left", "right" or "center"

Dim r As Reflector

Dim args(3) As Object = Array As Object(r.GetActivity, verticalPosition, horizontalPosition)

Dim types(3) As String = Array As String("android.app.Activity", "java.lang.String", "java.lang.String")

r.RunStaticMethod("ir.adad.AdadB4APlugin", "createAdView", args, types)

Activity.LoadLayout("zdaghmatn")

Dim Label1 As Label

Label1.Initialize("")

TextSetting1.Initialize()

ScrollView1.Panel.AddView(Label1,5,5,90%x,95%y)

If File.Exists(File.DirInternal,"FontType.txt") = False Then

File.Copy(File.DirAssets,"FontType.txt",File.DirInternal,"FontType.txt")

End If

If File.Exists(File.DirInternal,"FontSize.txt") = False Then

File.Copy(File.DirAssets,"FontSize.txt",File.DirInternal,"FontSize.txt")

End If

If File.Exists(File.DirInternal,"lineheight.txt") = False Then

File.Copy(File.DirAssets,"lineheight.txt",File.DirInternal,"lineheight.txt")

End If

Label2.Color = Colors.White

cur1 = zdagh.sql1.ExecQuery("SELECT matn FROM zdaghh WHERE list ='" &zdagh.meghdar & "'")

For i = 0 To cur1.RowCount-1

cur1.Position = i

Label1.text = cur1.GetString("matn")

Label1.TextColor = Colors.Black

Label1.Typeface = Typeface.LoadFromAssets(File.ReadString(File.DirInternal,"FontType.txt")&".TTF")

TextSetting1.LongText(Label1,Label1.text,25,ScrollView1,1)

FontSize = File.ReadString(File.DirInternal,"FontSize.txt")

Next

End Sub

Sub Activity_Resume

t.Initialize("t",1000)

t.Enabled = True

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub t_Tick

ScrollView1.ScrollPosition = LastScroll

End Sub

Sub ScrollView1_ScrollChanged(Position As Int)

ScrollView1.Initialize("")

LastScroll = Position

t.Enabled = False

End Sub

Sub ImageView1_Click

Dim i As Intent

Dim s As String

s = Label1.Text

i.Initialize(i.ACTION_SEND, "")

i.SetType("text/plain")

i.PutExtra("android.intent.extra.TEXT", s)

i.WrapAsIntentChooser("Share...")

StartActivity(i)

End Sub

Sub ImageView2_Click

StartActivity("Setting")

End Sub

Sub Button1_Click

Label1.TextColor = Colors.White

ImageView3.Enabled=False

ImageView3.Visible=False

ImageView4.Enabled=True

ImageView4.Visible=True

End Sub

Sub Button2_Click

Label1.TextColor = Colors.Black

ImageView3.Enabled=True

ImageView3.Visible=True

ImageView4.Enabled=False

ImageView4.Visible=False

End Sub

Sub SeekBar1_ValueChanged (Value As Int, UserChanged As Boolean)

Label1.TextSize = Value

FontSize = Value

End Sub

داداش نشد چیزی میخواستی اینطوری نوشتم اما باز ایراد داد ارورشم پیوست میکنم.

attachment.php?attachmentid=1051&stc=1

[/TD]

[/TR]

[/TABLE]

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

شما یکسری داده رو به یک متغییر Double یا Float مقدار دادین که ایراد میگیره چک کنید کددتون.چیزی که از ارورر فهمیدم همین بود

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

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

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

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

آقا مهدی دستت درد نکنه *give_rose*، انصافا یه ماه بود رو این مشکل کار میکردم و انواع روش ها رو استفاده کردم ولی به نتیجه نرسیده بودم.

حالا با این روش شما کاملا درست شد *dance**dance*

فکر کنم این باگ B4a باشه که کد DoEvents در مورد Set کردن ScrollPosition درست عمل نمیکنه

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

آقا مهدی دستت درد نکنه *give_rose*، انصافا یه ماه بود رو این مشکل کار میکردم و انواع روش ها رو استفاده کردم ولی به نتیجه نرسیده بودم.

حالا با این روش شما کاملا درست شد *dance**dance*

فکر کنم این باگ B4a باشه که کد DoEvents در مورد ScrollPosition درست عمل نمیکنه

خواهش میکنم.

بله کاملا درسته . B4A باگ زیاد داره که متاسفانه هرچقدر ورژن جدید میدن انگار جناب Erel بلد نیستن باگ گیری کنند *لال*

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

شایدم این کارو کردن مخ رو فشار بیاری از یه راه دیگه بری جلو *مکار* شاید

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

سلام داداشا میشه سورس این قسمتو برام بزارین من چندین ماهه به همه انجمن ها میرم کسی کمکم نمیکنه من برنامه رمان درس کردم که وقتی تا جایی میخونی و میای بیرون و دوباره میری داخل همون رمان دیگه از جایی که مونده نمیاره . واقعا اگه این مشکلمو تو این انجمن حل بکنین دیگه هیچوقت سراغ سایت دیگه ای نمیرم . منتظر جوابتون هستم

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

سلام داداشا میشه سورس این قسمتو برام بزارین من چندین ماهه به همه انجمن ها میرم کسی کمکم نمیکنه من برنامه رمان درس کردم که وقتی تا جایی میخونی و میای بیرون و دوباره میری داخل همون رمان دیگه از جایی که مونده نمیاره . واقعا اگه این مشکلمو تو این انجمن حل بکنین دیگه هیچوقت سراغ سایت دیگه ای نمیرم . منتظر جوابتون هستم

درود

همین مشکل رو حل میکنه دیگه:

http://answercenter.ir/thread1176.html#post6882

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

بایگانی شده

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

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

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