2016-03-21 5 views
0

Wenn ich auf edittext geklickt habe, können die Benutzer meine button wegen der Tastatur nicht sehen.Android, wie programmgesteuert scrollview scrollen Wenn ich auf edittext geklickt habe

Also ich möchte, Wenn die Benutzer auf edittext, scrollview geklickt haben, gehen Sie oben mit absolut glattem Effekt.

Meine erste Frage Welchen Zuhörer soll ich dafür verwenden? , OnFocus, OnTouch usw.?

Ich habe diesen Code-Block versucht, aber es braucht Doppelklick, um es zu scrollen. Klicken Sie zuerst auf die Tastatur, und klicken Sie dann mit der linken Maustaste auf scrollview.

Meine zweite Frage Jeder hat eine Idee zu diesem Problem? Danke fürs Helfen.

scrollView = (ScrollView) findViewById(R.id.scrollview); 
    et_space.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      scrollView.smoothScrollTo(0, 500); 
      return false; 
     } 
    }); 

Antwort

3

Danke Jungs für alle Antworten, aber ich mein Problem gelöst, indem ich selbst,

Zuerst möchte ich Sie sagen haben zu verwenden, "OnFocusListener" und dann müssen Sie Handler wie folgt verwenden;

Jetzt, wenn ich auf mein edittext klicke; Tastatur geöffnet und Scroll gescrollt zugleich nach oben :)

et_space.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       if (hasFocus){ 
       final Handler handler; 
       handler = new Handler(); 

       final Runnable r = new Runnable() { 
        public void run() { 
         scrollView.smoothScrollTo(0, 500); 

        } 
       }; 
       handler.postDelayed(r, 200); 
      } 
      } 
     }); 
+0

Diese Lösung hat auch für mich funktioniert, danke! – Marko

0
sv.scrollTo(5, 10); 

hoffen, dass diese Ihnen helfen.

scrollView.post(new Runnable() { 
    @Override 
    public void run() { 
     sv.scrollTo(5, 10); 
    } 
}); 
+0

ich das schon vorher versucht, es braucht Doppelklick Auch trotzdem danke :) –

+0

versuchen in separaten Thread, Hoffnung zu blättern, die funktionieren. –

0

Ändern Sie den Code wie folgt aus:

et_space.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch (event.getAction()) { 
        case MotionEvent.ACTION_DOWN: { 
         scrollView.smoothScrollTo(0, 500); 
         return false; 
        } 
       } 
       return true; 
     } 
    }); 
+0

Das funktioniert nicht:/ –

0

Sie können ein Widget an der gleichen Stelle unter Ihrem EditText.Such als Image namens "btn_show_keyboard" hinzufügen.

Dann führen Sie diese Mothod in Ihrer btn_show_keyboard.onClick() -Methode.

public void showSoftInput() { 
    mEditText.requestFocus();  
    mInputManager.showSoftInput(mEditText, 0); 
} 

Legen Sie Ihre Zielaktivität in diesem Soft-Eingabe-Modus fest.

android:windowSoftInputMode="adjustResize" 

Versuchen Sie diese, hoffe es hilft.

1

Versuchen Sie, diese
Verwendung diesen Code in OnClickListener von EditText

scrollview.scrollBy(0,scrollview.getBottom()); 
+0

Ich schrieb in meiner Frage; "scrollview gehen oben absolut mit glatten Effekt." –

Verwandte Themen