2016-03-31 10 views

Antwort

1

In diesem Fall Kind Ansicht Fokus immer zu verdanken, dass es nach oben gescrollt erhalten.

Um dies zu beheben, müssen Sie benutzerdefinierte ScrollView erstellen, die ScrollView erweitern. Code-Snipp wird so aussehen.

public class MyScrollView extends ScrollView { 


    public MyScrollView(Context context) { 
     super(context); 

    } 



    public MyScrollView(Context context, AttributeSet attrs) { 
     super(context, attrs); 

    } 


    @Override 
    public void requestChildFocus(View child, View focused) { 
     // if (focused instanceof TabHost) // here 
      return; 
     //super.requestChildFocus(child, focused); 
// here you need to return instead of **super.requestChildFocus(child, focused);** 
    } 

und sieht xml wie diese Antwort des

<com.views.widget.MyScrollView 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
    android:id="@+id/root_scroll_view" 
    android:layout_width="match_parent" 
    android:fillViewport="true" 
    android:layout_height="wrap_content"> 

</com.views.widget.MyScrollView > 
+0

Dank seiner Arbeit. –

1

Basierend auf Er Pragati Singh ich nicht requestChildFocus(View child, View focused) aber computeScrollDeltaToGetChildRectOnScreen(Rect rect) hat außer Kraft setzen.

Zwingende requestChildFocus wird auch verhindern, dass die Tastatur auf dem Bildschirm zu aktivieren, wenn ein EditText berühren, die bereits den Fokus hat, während computeScrollDeltaToGetChildRectOnScreen nur das Delta Scroll innerhalb requestChildFocus verwendet wird zur Berechnung der Ansicht in Sicht zu bringen. Wenn diese Funktion überschrieben wird, bleiben alle anderen Routinen intakt.

Java:

public class MyScrollView extends ScrollView { 
    public MyScrollView(Context context) { 
     super(context); 

    } 

    public MyScrollView(Context context, AttributeSet attrs) { 
     super(context, attrs); 

    } 

    @Override 
    protected int computeScrollDeltaToGetChildRectOnScreen(Rect rect) { 
     // This function calculates the scroll delta to bring the focused view on screen. 
     // -> To prevent unsolicited scrolling to the focued view we'll just return 0 here. 
     // 
     return 0; 
    } 
} 

XML:

<YOUR.PAKAGE.NAME.MyScrollView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
</YOUR.PAKAGE.NAME.MyScrollView> 
Verwandte Themen