ScrollView in HorizontalScrollview

  • 2 Antworten
  • Letztes Antwortdatum
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:

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
 
Code:
If(dx>=Grenzwert)
HorizontalScrollView.scrollBy(dx,0);
Eventuell so?

Gesendet von meinem Nexus 5 mit der Android-Hilfe.de App
 
Danke für die Antwort, hat aber leider nicht das gewünschte Ergebnis erbracht.

Würde eine CustomScrollview hier helfen? Also eine selbst geschriebene die von Scrollview bzw. HorizontalScrollview ableitet?
Oder besteht hier die Wahrscheinlichkeit, dass es davon auch nicht besser wird?

Könnte es eventuell daran liegen, dass ein onClicklistener auf den einzelnen Zeilen im Datenteil liegt??
 
Zurück
Oben Unten