3

Ich habe einige Quellcode zum Scrollen.setScrollX Funktion funktioniert nicht gut

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    TextView tv = findViewById(R.id.txtv); 
    HorizontalScrollView sv = findViewById(R.id.scroll); 

    sv.setScrollX(100); 
} 

Ich möchte x Scroll-Position auf 100px einstellen. Aber setScrollX Funktion funktioniert nicht gut. Was ist das Problem? Wie soll ich es machen?

+1

setScrollX() nimmt Pixel Ich glaube und nicht dp. Welche Ausgabe erhalten Sie derzeit? –

+0

Danke für Ihre Antwort. Momentan bewegt sich x Scroll-Position niemals. –

+0

Sie möchten vertikal oder horizontal blättern? um vertikal zu scrollen benutze setScrollY() und für horizontal setScrollX() –

Antwort

1

Das Problem ist, dass an diesem Punkt die tatsächliche Ansicht, die noch nicht angelegt ist. Sie haben das Scrollen zu verzögern, bis HorizontalScrollView angelegt wird:

 

    protected void onCreate(Bundle savedInstanceState) { 
     ... 
     HorizontalScrollView sv = findViewById(R.id.scroll); 
     sv.post(new Runnable() { 
      @Override 
      public void run() { 
       sv.smoothScrollBy(100, 0); 
      } 
     }) 
    } 
 
+0

erstaunlich. Vielen Dank. –

0

Alles was Sie tun müssen, ist

  sv.post(new Runnable() { 
      @Override 
      public void run() { 
       sv.smoothScrollBy(100, 0);// x,y 
      } 
     }); 
+0

'postDelayed' ist übertrieben, gewöhnliche' Post' ist gut zu gehen. – azizbekian

+0

erstaunlich. Vielen Dank. –

+0

@azizbekian nett, lass mich meine Antwort bearbeiten. –