У меня есть этот пользовательский вид прокрутки:
public class MyScrollView extends NestedScrollView {
// true if we can scroll (not locked)
// false if we cannot scroll (locked)
private boolean mScrollable = false;
public MyScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
public MyScrollView(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public MyScrollView(Context context)
{
super(context);
}
public void setScrollingEnabled(boolean enabled) {
mScrollable = enabled;
}
public boolean isScrollable() {
return mScrollable;
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch(event.getKeyCode()){
case KeyEvent.KEYCODE_DPAD_RIGHT:
this.scrollTo(100, 0);
return true;
case KeyEvent.KEYCODE_DPAD_LEFT:
this.scrollTo(-100, 0);
return true;
}
}
return super.dispatchKeyEvent(event);
}
}
Я хочу прокрутить до заданного значения c x и y, как только пользователь попытается прокрутить. Я могу перехватить правое и левое событие, потому что могу попасть внутрь двух случаев моего переключателя, однако this.scrollTo (100, 0) ничего не делает с просмотром прокрутки.
Это как у меня это в моем макете:
<com.example.myapp.custom_elements.MyScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbarThumbHorizontal="@null"
android:focusableInTouchMode="true"
android:focusable="true"/>
(Кстати, прокрутка работает нормально, если я возвращаю false в моих случаях переключения).