Android CalendarView ScrollView - 日历卡住了

时间:2017-05-23 15:40:16

标签: android scrollview calendarview

我在ScrollView中使用CalendarView。最小SDK为17,目标sdk为25,编译sdk 25,构建工具版本为25.0.3。 我遇到的问题是滚动。在设备API v23及更高版本上运行此功能似乎正常,但对于需要激活ScrollView时的较低API,无法将日历滚动到另一个月。

从我所看到的情况来看,似乎可以通过在ScrollView垂直滚动时使Calendar平滑滚动来修复API v23中的问题。使用带有v22的设备,它们都垂直滚动,因此当需要激活ScrollView时,CalendarView的滚动到另一个月不起作用。至少那是我的样子。

在我为此找到修复程序的努力中,似乎用户@Joel在以下帖子中提供的答案通过提供自定义ScrollView来修复此问题:

HorizontalScrollView within ScrollView Touch Handling

我很惊讶,在这段时间之后,Android团队还没有在v22和之前修复过它。原始修复程序由上述用户于2010年4月16日发布。

虽然我很高兴上述SO帖子已经解决了这个问题,但还有其他原生方法可以解决这个问题吗?我唯一真正关心的是自定义ScrollView可能无法为所有可能的情况提供解决方案。我只实现了自定义ScrollView for API v22及更低版本,对于API v23及更高版本,我使用了本机ScrollView。

  

编辑:按要求添加示例。好在第23节及以上   但是,在v22模拟器中,Landscape无法更改月份

package boh3.com.testcal001;

导入android.os.Bundle; import android.support.v7.app.AppCompatActivity;

公共类ActivityMain扩展了AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

}

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<android.support.design.widget.TabLayout
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:background="@color/colorPrimary"
    app:tabGravity="fill"
    app:tabMode="fixed" />

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/lay_detail"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/tabs"
    android:orientation="vertical">

    <!-- Selected Date -->
    <TextView
        android:id="@+id/txv_date_and_time"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:lines="1"
        android:padding="4dip"
        android:text="This is Some Text"
        android:textSize="18sp"
        android:textStyle="bold" />

    <!-- TIME UNTIL DATE AND TIME -->
    <TextView
        android:id="@+id/txv_remaining_time"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txv_date_and_time"
        android:gravity="center_horizontal"
        android:lines="1"
        android:padding="4dip"
        android:text="This is some more text"
        android:textColor="@color/colorAccent"
        android:textSize="18sp"
        android:textStyle="bold" />
</RelativeLayout>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/lay_scroll"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/lay_detail"
    android:layout_marginBottom="65dip"
    android:layout_marginTop="10dip"
    android:orientation="vertical">

    <ScrollView
        android:id="@+id/scroll_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <RelativeLayout
            android:id="@+id/lay_fragment"
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_gravity="top|center"
            android:layout_marginBottom="0dip"
            android:layout_marginTop="0dip"
            android:layout_weight="1"
            android:orientation="vertical">

            <CalendarView
                android:id="@+id/date_picker"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:scrollbarAlwaysDrawVerticalTrack="false"
                android:layout_marginBottom="25dip"
                android:isScrollContainer="true"
                android:scrollbarAlwaysDrawHorizontalTrack="true"
                android:orientation="horizontal"
                android:textSize="12sp" />
        </RelativeLayout>
    </ScrollView>
</RelativeLayout>

<android.support.design.widget.BottomNavigationView
    android:id="@+id/bottom_nav"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    android:layout_alignParentBottom="true"
    />

0 个答案:

没有答案