我正在为盲人实现一个应用程序,我想知道如何使用滚动视图仅从屏幕右侧滚动。(屏幕的其余部分将无法滚动按钮手指扫描)。
问问题
88 次
2 回答
0
您可以扩展 ListView 并覆盖 onTouchEvent(MotionEvent ev) 方法。
然后,如果用户试图在您不希望他们滚动的部分滚动,您执行逻辑拦截事件并且不要将其传递给 ListView。
这很难做到。也许还有另一种更简单的方法。
无论如何,这是一个例子:
@Override
public boolean onTouchEvent(MotionEvent ev) {
final int action = ev.getAction();
final int x = (int) ev.getX();
final int y = (int) ev.getY();
if (action == MotionEvent.ACTION_DOWN && x < getWidth() / 7 && (selectableFromTheBeginning || actionMode != null)) {
selectionMode = true;
startPosition = pointToPosition(x, y);
}
if (!selectionMode){
return super.onTouchEvent(ev);
}
switch (action) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
if (pointToPosition(x, y) != startPosition)
selectionMode = false;
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
default:
selectionMode = false;
int itemPosition = pointToPosition(x, y);
if (startPosition != ListView.INVALID_POSITION && isSelectable(itemPosition)){
setItemChecked(itemPosition, !isItemChecked(itemPosition));
}
}
return true;
}
通过这个实现,我正在做一些逻辑让用户选择 ListView 的一个元素,只需单击项目的左侧部分。如果您没有找到其他方法,您可以尝试了解如何实现此方法。
但我给你一个建议:你不应该以这种方式破坏用户体验。用户将尝试以正常方式滚动您的 ListView,他们不会理解您要做什么。我不建议你这样做。
于 2013-07-26T21:01:15.677 回答
0
您可以将 ScrollView 放在布局中的任何位置。因此,如果您有一个分割屏幕的 LinearLayout,您可以将 ScrollView 放在一个部分中,只需确保它有另一个 Layout 作为子级,因为它只能有一个子级。如果您的按钮区域应该部分覆盖 ScrollView,您可以使用 RelativeLayout 作为外部布局,在这种情况下,首先将 ScrollView 添加到您的布局中,然后将下一个布局部分添加到上方。例如
<RelativeLayout ...>
<ScrollView android:marginLeft="100dp" android:layoutWidth="match_parent" ...>
<LinearLayout .../>
</ScrollView>
<LinearLayout android:alignParentLeft="true" android:marginRight="200dp" .../>
</RelativeLayout>
于 2013-07-26T21:09:04.220 回答