自定义 HorizontalScrollView 管理 - enable/disable 滚动
Custom HorizontalScrollView management - enable/disable scroll
我正在尝试同时进行垂直和水平滚动,但有时我不需要激活此水平滚动。
所以我想要一个自定义的水平视图组件,我可以根据需要管理水平滚动。
所以我实现了这个自定义水平滚动 class:
public class CustomHorizontalScroll extends ScrollView {
private boolean enableScrolling = true;
public boolean isEnableScrolling() {
return enableScrolling;
}
public void setEnableScrolling(boolean enableScrolling) {
this.enableScrolling = enableScrolling;
}
public CustomHorizontalScroll(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CustomHorizontalScroll(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomHorizontalScroll(Context context) {
super(context);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (isEnableScrolling()) {
return super.onInterceptTouchEvent(ev);
} else {
return false;
}
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (isEnableScrolling()) {
return super.onTouchEvent(ev);
} else {
return false;
}
}
}
在我的 activity 中,我可以像这样启用或禁用滚动:
horizontalScrollView = (CustomHorizontalScroll) findViewById(R.id.horizontal_scroll_view);
horizontalScrollView.setEnableScrolling(true); // try first to set as enable by default to see if it works
但是此时滚动总是被阻塞,即使我像上面这个例子一样通过'true'。
这是我的垂直和水平滚动的布局代码:
<!-- Vertical scroll -->
<ScrollView
android:id="@+id/staffList_scrollview"
android:layout_width="950dp"
android:layout_height="555dp"
android:layout_marginTop="10dp">
<!-- Horizontal scroll -->
<com.myPackage.CustomHorizontalScroll
android:id="@+id/horizontal_scroll_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
....
</RelativeLayout>
</com.myPackage.CustomHorizontalScroll>
</ScrollView>
我的问题是什么?我希望能够禁用和启用此水平滚动。但是目前使用这个自定义水平class,这个滚动总是禁用我可以打开它启用。
我觉得有两个问题。首先,扩展到 ScrollView 而不是 HorizontalScrollView。
其次,为垂直滚动分配一个固定的宽度。
<ScrollView
android:id="@+id/staffList_scrollview"
android:layout_width="950dp"
android:layout_height="555dp"
android:layout_marginTop="10dp">
如果你通过这个改变它应该有效
<ScrollView
android:id="@+id/staffList_scrollview"
android:layout_width="match_parent"
android:layout_height="555dp"
android:layout_marginTop="10dp">
测试这些更改并告诉我它是否有效。你好。
我正在尝试同时进行垂直和水平滚动,但有时我不需要激活此水平滚动。
所以我想要一个自定义的水平视图组件,我可以根据需要管理水平滚动。
所以我实现了这个自定义水平滚动 class:
public class CustomHorizontalScroll extends ScrollView {
private boolean enableScrolling = true;
public boolean isEnableScrolling() {
return enableScrolling;
}
public void setEnableScrolling(boolean enableScrolling) {
this.enableScrolling = enableScrolling;
}
public CustomHorizontalScroll(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CustomHorizontalScroll(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomHorizontalScroll(Context context) {
super(context);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (isEnableScrolling()) {
return super.onInterceptTouchEvent(ev);
} else {
return false;
}
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (isEnableScrolling()) {
return super.onTouchEvent(ev);
} else {
return false;
}
}
}
在我的 activity 中,我可以像这样启用或禁用滚动:
horizontalScrollView = (CustomHorizontalScroll) findViewById(R.id.horizontal_scroll_view);
horizontalScrollView.setEnableScrolling(true); // try first to set as enable by default to see if it works
但是此时滚动总是被阻塞,即使我像上面这个例子一样通过'true'。
这是我的垂直和水平滚动的布局代码:
<!-- Vertical scroll -->
<ScrollView
android:id="@+id/staffList_scrollview"
android:layout_width="950dp"
android:layout_height="555dp"
android:layout_marginTop="10dp">
<!-- Horizontal scroll -->
<com.myPackage.CustomHorizontalScroll
android:id="@+id/horizontal_scroll_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
....
</RelativeLayout>
</com.myPackage.CustomHorizontalScroll>
</ScrollView>
我的问题是什么?我希望能够禁用和启用此水平滚动。但是目前使用这个自定义水平class,这个滚动总是禁用我可以打开它启用。
我觉得有两个问题。首先,扩展到 ScrollView 而不是 HorizontalScrollView。
其次,为垂直滚动分配一个固定的宽度。
<ScrollView
android:id="@+id/staffList_scrollview"
android:layout_width="950dp"
android:layout_height="555dp"
android:layout_marginTop="10dp">
如果你通过这个改变它应该有效
<ScrollView
android:id="@+id/staffList_scrollview"
android:layout_width="match_parent"
android:layout_height="555dp"
android:layout_marginTop="10dp">
测试这些更改并告诉我它是否有效。你好。