I have a scroll view with a Label, Edittext, 3 buttons, a checkbox and a spinner all dynamically generated on each row (many rows are made). When I scroll the scrollview, one of the edittexts gets focus, even if my finger is scrolling over the other controls.
Any ideas as to why this is happening and a way to stop it? I'd like to have focus of these edittexts at some point, but only when I actually click on them while the scrollview is stationary.
Can you create a small project that demonstrates this?
I've tried it with this code:
B4X:
Sub Globals
Private ScrollView1 As ScrollView
End Sub
Sub Activity_Create(FirstTime As Boolean)
ScrollView1.Initialize2(1000dip, "ScrollView1")
Activity.AddView(ScrollView1, 0, 0, 100%x, 100%y)
Dim et As EditText
et.Initialize("et")
ScrollView1.Panel.AddView(et, 0, 0, 200dip, 100dip)
End Sub
Can you create a small project that demonstrates this?
I've tried it with this code:
B4X:
Sub Globals
Private ScrollView1 As ScrollView
End Sub
Sub Activity_Create(FirstTime As Boolean)
ScrollView1.Initialize2(1000dip, "ScrollView1")
Activity.AddView(ScrollView1, 0, 0, 100%x, 100%y)
Dim et As EditText
et.Initialize("et")
ScrollView1.Panel.AddView(et, 0, 0, 200dip, 100dip)
End Sub
I ran that code you posted, Erel. Quite rightly, it worked flawlessly. However, I noticed (and I should have mentioned this before actually) that changing the scrollview to scrollview2d does the auto-focusing. Perhaps i'm using scrollview2d wrong? Try changing it to see what i'm talking about.
Sub Globals
Private ScrollView1 As ScrollView2D
End Sub
Sub Activity_Create(FirstTime As Boolean)
ScrollView1.Initialize(500dip, 1000dip, "ScrollView1")
Activity.AddView(ScrollView1, 0, 0, 100%x, 100%y)
Dim et As EditText
et.Initialize("et")
ScrollView1.Panel.AddView(et, 0, 0, 200dip, 100dip)
End Sub
The keyboard didn't show when scrolling the scrollview.
This code works OK on my xperia z1 (Android 4.4.2 B4A 3.80)
B4X:
Sub Globals
Dim scvTest As ScrollView2D
End Sub
Sub Activity_Create(FirstTime As Boolean)
scvTest.Initialize(100, 100, "")
Activity.AddView(scvTest, 0, 0, 100%x, 100%y)
Dim i, j As Int
For i = 0 To 20
For j = 0 To 4
Dim edt As EditText
edt.Initialize("edt")
scvTest.Panel.AddView(edt, 5dip + j * 155dip, 5dip + i * 55dip, 150dip, 50dip)
edt.Text = i * 5 + j
Next
Next
scvTest.Panel.Width = 5dip + 4 * 155dip
scvTest.Panel.Height = 5dip + 21 * 55dip
End Sub
Could you post your project or at least a small one showing the problem.
Thanks for your reply. I'm afraid that all I would be doing would be posting back the same code you've just provided.
If I swish my finger along the scrollview2d in that code you posted, one of the numbered boxes automatically gets the focus (not necessarily the one my finger touches first either). I have noticed (the code you just posted highlights this very well actually) that the box that ends up with the focus is usually one of the ones that ends up being in one of the corners of the currently visible screen of boxes after the scrolling animation finishes.
So just to be clear, I scroll, the scrolling animation runs, it comes to a rest, and one of the boxes (in one of the corners of the now resting screen) now has focus.
It's nuts! XD
Oh, and I updated scrollview2d library from 1.03 to 1.1. Still same problem.
Running B4A v3.50 and Android 4.0.3 (using lease device so I cant update that one, sorry).
I've started lighting candles and drawing religious symbols on my desk.