2014-09-25 188 views
2

在我的Android應用程序中,我需要滾動上下滾動查看CalendarView和LinearLayout中放置的CalendarView的月份。CalendarView裏面的滾動視圖

這是我的XML結構:

-ScrollView 
--LinearLayout 
---CalendarView 

我應該爲了讓日曆上下滾動做什麼(所以選擇不同的月份)?

當前的ScrollView行爲似乎禁用了日曆的滾動。

任何幫助,將不勝感激。

回答

0

您是否嘗試過使用沒有ScrollView的CalendarView?我可以簡單地滾動月 - ParentView(RelativeLayout的在我的情況) - 其他的看法 - CalendarView

0

首先創建一個自定義日曆視圖

scrollCalendar.java

import android.util.AttributeSet; 
import android.view.MotionEvent; 
import android.widget.CalendarView; 
import android.content.Context; 
import android.view.ViewParent; 
import android.view.MotionEvent; 

public class scrollCalendar extends CalendarView { 

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

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

public scrollCalendar(Context context,AttributeSet attrs, int defStyle) 
{ 
    super(context,attrs,defStyle); 
} 
@Override 
public boolean onInterceptTouchEvent(MotionEvent ev) { 
    if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) { 
     ViewParent p= this.getParent(); 
     if (p != null) 
      p.requestDisallowInterceptTouchEvent(true); 
    } 
    return false; 
} 
} 

在Activity.xml文件中

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_marginTop="50dp"> 

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:scrollbarThumbHorizontal="@null" 
    android:scrollbarThumbVertical="@null" 
    android:isScrollContainer="true"> 

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

    <com.example.gateway.scrollCalendar 
     android:id="@+id/calendarDate" 
     android:layout_width="wrap_content" 
     android:layout_height="250dp" 
     android:layout_gravity="center" 
     android:background="@drawable/edit_bg" 
     android:visibility="gone"> 
    </com.example.gateway.scrollCalendar> 

</LinearLayout> 

</ScrollView> 

</RelativeLayout> 
0

這可能有助於未來users.Use下面給出自定義scro會查看課程。在你的XML中,只需將ScrollView替換爲nameofpackage.VerticalScrollView即可。 nameofpackage表示完整的包名稱,您可以在其中放置自定義滾動視圖類(即,如果它是com.example比nameofpackage.VerticalScrollView = com.example.VerticalScrollView)。

public class VerticalScrollView extends ScrollView{ 

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

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

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

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent ev) { 
     final int action = ev.getAction(); 
     switch (action) 
     { 
      case MotionEvent.ACTION_DOWN: 
       Log.i("VerticalScrollview", "onInterceptTouchEvent: DOWN super false"); 
       super.onTouchEvent(ev); 
       break; 

      case MotionEvent.ACTION_MOVE: 
       return false; // redirect MotionEvents to ourself 

      case MotionEvent.ACTION_CANCEL: 
       Log.i("VerticalScrollview", "onInterceptTouchEvent: CANCEL super false"); 
       super.onTouchEvent(ev); 
       break; 

      case MotionEvent.ACTION_UP: 
       Log.i("VerticalScrollview", "onInterceptTouchEvent: UP super false"); 
       return false; 

      default: Log.i("VerticalScrollview", "onInterceptTouchEvent: " + action); break; 
     } 

     return false; 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent ev) { 
     super.onTouchEvent(ev); 
     Log.i("VerticalScrollview", "onTouchEvent. action: " + ev.getAction()); 
     return true; 
    } 
} 
相關問題