当嵌套在android的scrollview中时,calendarview停止滚动 [英] calendarview stops scrolling when nested in scrollview in android

查看:103
本文介绍了当嵌套在android的scrollview中时,calendarview停止滚动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 ScrollView 中嵌套了calendarview.当视线高度增加时,我的问题就开始了.我可以垂直滚动日历月份,但是当 scrollview 滚动条出现时,它不允许滚动日历.而不是滚动日历,整个视图将向上或向下滚动.

I have nested calendarview in ScrollView . My problem begins when height of view increases. I can scroll calendar months vertically but when scrollview scrollbar comes it does not let scroll calendar. Instead of scrolling calendar the whole view scroll up or down.

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:fillViewport="true">

<LinearLayout android:orientation="vertical" android:id="@+id/ReminderLayout" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" >


        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <EditText
                android:id="@+id/TaskName"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:inputType="textCapWords"
                android:singleLine="true"
                android:textSize="26.0sp" />

            <View
                android:id="@+id/seperator"
                android:layout_width="fill_parent"
                android:layout_height="1dip" />

            <TextView
                android:id="@+id/lblNotes"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Notes" />

            <EditText
                android:id="@+id/TaskNotes"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:inputType="textMultiLine"
                android:textSize="26.0sp" />

            <View
                android:id="@+id/seperator"
                android:layout_width="fill_parent"
                android:layout_height="1dip" />

            <TextView
                android:id="@+id/lblReminder"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Reminder" />
        </LinearLayout>

        <LinearLayout android:orientation="horizontal" 
            android:layout_width="fill_parent" android:layout_height="wrap_content">"

            <CalendarView
                android:id="@+id/calendarReminder"
                android:layout_width="fill_parent"
                android:layout_height="250dp" 
                android:scrollbars="vertical"
                android:isScrollContainer="true" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
           android:layout_height="wrap_content"
            android:orientation="horizontal"
            >

            <TimePicker
                android:id="@+id/timePickerReminder"
                android:layout_width="fill_parent"
                android:layout_height="match_parent"
                android:gravity="center" />

        </LinearLayout>


        <LinearLayout android:orientation="vertical" 
            android:layout_width="fill_parent" android:layout_height="wrap_content" >
            <View android:id="@+id/seperator" android:layout_width="fill_parent" android:layout_height="1dip"/>
            <TextView android:id="@+id/ReminderTime" android:layout_width="fill_parent" android:layout_height="wrap_content"
                 android:text="On Time" android:paddingLeft="20dip"/>
            <View android:id="@+id/seperator" android:layout_width="fill_parent" android:layout_height="1dip"/>
            <TextView android:id="@+id/Recurring" android:layout_width="fill_parent" android:layout_height="wrap_content"
                android:text="Only Once" android:paddingLeft="20dip"/>
        </LinearLayout> 
</LinearLayout>
</ScrollView>

推荐答案

我在这里找到了此问题的答案: https://stackoverflow.com/a/9687545

I've found answer to this problem here: https://stackoverflow.com/a/9687545

基本上,您需要实现自定义CalendarView并重写onInterceptTouchEvent方法.我这样做如下:

Basically you need to implement custom CalendarView and override onInterceptTouchEvent method. I did it as following:

package com.example.app.views;

public class CalendarViewScrollable extends CalendarView {

    public CalendarViewScrollable(Context context) {
        super(context);
    }

    public CalendarViewScrollable(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CalendarViewScrollable(Context context, AttributeSet attrs,
            int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev)
    {
        if (ev.getActionMasked() == MotionEvent.ACTION_DOWN)
        {
            ViewParent p = getParent();
            if (p != null)
                p.requestDisallowInterceptTouchEvent(true);
        }

        return false;
    }

}

然后仅在XML布局文件中使用此视图:

Then just use this view in XML layout file:

<com.example.app.views.CalendarViewScrollable
    android:id="@+id/datePicker1"
    android:layout_width="400dp"
    android:layout_height="400dp"
 />

这篇关于当嵌套在android的scrollview中时,calendarview停止滚动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆