在我的Android應用程序中,我需要滾動上下滾動查看CalendarView和LinearLayout中放置的CalendarView的月份。CalendarView裏面的滾動視圖
這是我的XML結構:
-ScrollView
--LinearLayout
---CalendarView
我應該爲了讓日曆上下滾動做什麼(所以選擇不同的月份)?
當前的ScrollView行爲似乎禁用了日曆的滾動。
任何幫助,將不勝感激。
在我的Android應用程序中,我需要滾動上下滾動查看CalendarView和LinearLayout中放置的CalendarView的月份。CalendarView裏面的滾動視圖
這是我的XML結構:
-ScrollView
--LinearLayout
---CalendarView
我應該爲了讓日曆上下滾動做什麼(所以選擇不同的月份)?
當前的ScrollView行爲似乎禁用了日曆的滾動。
任何幫助,將不勝感激。
您是否嘗試過使用沒有ScrollView的CalendarView?我可以簡單地滾動月 - ParentView(RelativeLayout的在我的情況) - 其他的看法 - CalendarView
首先創建一個自定義日曆視圖
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>
這可能有助於未來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;
}
}