【发布时间】:2017-05-02 13:03:43
【问题描述】:
我需要一个具有这样 UI 的电视应用程序:
当按下远程视频信息上的上/下按钮时,应该折叠,然后网格应该滚动,然后新的视频信息应该展开。
每行单独加载,并有自己的分页。
我用ScrollView 和RecyclerViews 实现了它。但是动画并不流畅,因为ScrollView 先滚动了一点,然后我的自定义动画就开始了。我想禁止滚动向上/向下按钮单击并手动处理它们。我创建了一个ScrollView 后代并试图为此覆盖一些东西。
public class VideoSelector extends ScrollView {
public VideoSelector(Context context, AttributeSet attrs) {
super(context, attrs);
setVerticalScrollBarEnabled(false);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return true;
}
@Override
public boolean canScrollVertically(int direction) {
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
DPLog.i("ScrollView onTouchEvent: %s", event.toString());
return super.onTouchEvent(event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
DPLog.i("ScrollView key down: %s", event.toString());
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
DPLog.i("ScrollView key up: %s", event.toString());
return super.onKeyUp(keyCode, event);
}
}
这不起作用,onKeyUp 或 onKeyDown 永远不会被调用。
我发现捕获关键事件的唯一方法是在 Activity 中覆盖 onKeyDown。这个函数被称为罚款。但这似乎是一个丑陋的解决方案。
在电视应用的视图中,我还能做些什么来处理来自遥控器的关键事件?
是否有可能使用倾斜控件制作这样的 UI?
【问题讨论】:
-
您找到解决方案了吗?我有类似的问题,如果你能帮忙。 stackoverflow.com/q/67972525/4732846
标签: android android-scrollview android-tv