ScrollView борется с прокруткой TimePicker, Timepicker не прокручивается в результате
Надеюсь, что здесь есть решение, у меня есть XML TimePicker и ScrollView в моем main.xml, и с настройкой TimePicker не прокручивается. Если я удалю ScrollView, Timepicker будет прокручиваться очень хорошо, но, очевидно, мне нужны оба.
Кажется, что они оба борются, чтобы получить события касания, но это вызывает проблемы.
Вот мой код:
<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>
Я удалил нерелевантный код, но сохранил контуры, чтобы показать вам, как устроен макет.
Есть ли исправление в XML? Я пробовал такие вещи, как android:fillViewPort=""
но это ничего не сделало. Мой TimePicker не является частью Dialog или чего-либо еще, и, надеюсь, я смогу сохранить его таким образом.
1 ответ
Решение
Найдя решение, создайте собственный класс TimePicker и затем вызовите его, чтобы переопределить события касания:
@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;
}