M
MandraKobold
Ambitioniertes Mitglied
- 3
Hallo,
zum realisieren einer Tabelle mit fixen Headern (Vertical) aber scrollbaren Datenteil, wurde eine Layout mit Hilfe einer XML-Datei erstellt.
Innerhalb der XML-Datei wurde eine HorizontaleScrollView als basis genutzt, auf der eine Table + Row für den Header, sowie eine ScrollView für den Datenteil mit Table + Rows initialisiert wurden.
Die onTouch Listener wurden für beide ScrollViews überschrieben. Wobei der der (vertikalen) Scrollview das Event nicht konsumiert und weiter gibt.
Das funktioniert soweit auch ganz gut.
Nun ist aber das Problem, wenn beim scrollen ein kleiner Stubs erfolgt, der nicht genau gerade ist (also etwas in der X-koordinaten abweicht), dann ist das Scrollen nicht sehr flüssig. Bei grösseren Abweichungen ist das ok und auch gewünscht aber bei Abweichungen innerhalb eines gewissen Wertes, darf das gleiche Event wie bei einem geraden Stubs erfolgen (schnelles durch Scrollen).
Kann dieser Wert für die Abweichung verändert werden ?
Wenn Nein, wie kann sonst die ScrollView mit der gewünschten Eigenschaft
realisiert werden?
Hier zum besseren Versändnis, der Code der onTouchListener:
VG
Mandra
zum realisieren einer Tabelle mit fixen Headern (Vertical) aber scrollbaren Datenteil, wurde eine Layout mit Hilfe einer XML-Datei erstellt.
Innerhalb der XML-Datei wurde eine HorizontaleScrollView als basis genutzt, auf der eine Table + Row für den Header, sowie eine ScrollView für den Datenteil mit Table + Rows initialisiert wurden.
Die onTouch Listener wurden für beide ScrollViews überschrieben. Wobei der der (vertikalen) Scrollview das Event nicht konsumiert und weiter gibt.
Das funktioniert soweit auch ganz gut.
Nun ist aber das Problem, wenn beim scrollen ein kleiner Stubs erfolgt, der nicht genau gerade ist (also etwas in der X-koordinaten abweicht), dann ist das Scrollen nicht sehr flüssig. Bei grösseren Abweichungen ist das ok und auch gewünscht aber bei Abweichungen innerhalb eines gewissen Wertes, darf das gleiche Event wie bei einem geraden Stubs erfolgen (schnelles durch Scrollen).
Kann dieser Wert für die Abweichung verändert werden ?
Wenn Nein, wie kann sonst die ScrollView mit der gewünschten Eigenschaft
realisiert werden?
Hier zum besseren Versändnis, der Code der onTouchListener:
Code:
scrollView.setOnTouchListener(new View.OnTouchListener() { // inner scroll listener
private float vCurX, vCurY;
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
horizontalSrollView.setOnTouchListener(new View.OnTouchListener() { // outer scroll listener
private float mx, curX, my, curY;;
private boolean started = false;
@Override
public boolean onTouch(View v, MotionEvent event) {
curY = event.getY();
curX = event.getX();
int dx = (int) (mx - curX);
int dy = (int) (my - curY);
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
if (started) {
scrollView.scrollBy(0, dy);
horizontalSrollView.scrollBy(dx, 0);
} else {
started = true;
}
mx = curX;
my = curY;
break;
case MotionEvent.ACTION_UP:
scrollView.scrollBy(0, dy);
horizontalSrollView.scrollBy(dx, 0);
started = false;
break;
}
return true;
}
});
VG
Mandra