2013-01-16 11 views
7

Speriamo che ci sia una soluzione qui, ho un XML TimePicker e ScrollView nel mio main.xml e con il set up TimePicker non scorre. Se rimuovo ScrollView, Timepicker scorrerà bene ma ovviamente ho bisogno di entrambi.ScrollView combattimento con scorrimento di TimePicker, Timepicker non scorre come risultato

Sembra che entrambi stiano lottando per ottenere gli eventi touch ma sta causando problemi.

Ecco il mio codice:

<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:background="@color/backgroundmain"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <!-- Action Title --> 
     <ImageView /> 

     <TextView /> 

     <!-- Description --> 
     <TextView /> 

     <!-- Have to Button --> 
     <TextView /> 

     <RelativeLayout 
      android:id="@+id/TimePickerSection" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:layout_marginTop="5dp" 
      android:layout_centerHorizontal="true" 
      android:layout_below="@id/"> 

      <TimePicker 
       android:id="@+id/TimePick" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:layout_centerVertical="true" 
       android:layout_below="@id/HaveToText"/> 

      <Button 
       android:id="@+id/OkButton" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:text="@string/OkText" 
       android:layout_below="@id/HaveToText" 
       android:textSize="20sp" 
       android:onClick="TimePickButton" 
       android:layout_centerVertical="true" 
       android:layout_toRightOf="@id/TimePick"/> 

     </RelativeLayout> 

    <!-- OR --> 
    <TextView /> 

    <!-- buttons --> 
    <TextView /> 

    <Button /> 

    </RelativeLayout> 

</ScrollView> 

Ho rimosso il codice irrilevante, ma continuavo i contorni solo per mostrare come il layout è disposto.

C'è una correzione nell'XML? Ho provato cose come android:fillViewPort="" ma questo non ha fatto nulla. My TimePicker non fa parte di un Dialog o altro e spero di poterlo mantenere in questo modo.

risposta

12

trovato la soluzione, creare una classe TimePicker personalizzato e quindi chiamare questo per ignorare gli eventi di tocco:

@Override 
public boolean onInterceptTouchEvent(MotionEvent ev) { 
    // Stop ScrollView from getting involved once you interact with the View 
    if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) { 
     ViewParent p = getParent(); 
     if (p != null) 
      p.requestDisallowInterceptTouchEvent(true); 
    } 
    return false; 
} 
+0

Questo salvato la mia giornata! –

Problemi correlati