我创建了自己的复合小部件,就像这样:
<LinearLayout>
<TextView />
<Button />
</LinearLayout>
我将其中的 15 个放在 ScrollView 中。我希望它的行为类似于 ListView(我不能直接将 ListView 用于此任务)。
我需要每个小部件在按下时突出显示。我已经让它工作了,但它太敏感了——只要我的手指碰到布局,它就会突出显示——我希望在突出显示之前有一个延迟,以便区分真正的点击和滚动手势。
例如,在 ListView 中,当您拖动手指进行滚动时,除非您将手指放在行上一秒钟,否则行项不会突出显示。
这就是我设置每个复合项目的背景的方式:
private void setBg() {
ColorDrawable blr = new ColorDrawable(0xFFFFFFFF);
Drawable pressed = getContext().getResources().getDrawable(android.R.drawable.list_selector_background);
StateListDrawable bg = new StateListDrawable();
bg.addState(View.PRESSED_ENABLED_STATE_SET, pressed);
bg.addState(View.FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, pressed);
bg.addState(View.PRESSED_ENABLED_FOCUSED_STATE_SET, pressed);
bg.addState(View.ENABLED_WINDOW_FOCUSED_STATE_SET, pressed);
bg.addState(View.ENABLED_STATE_SET, blr);
bg.addState(View.SELECTED_WINDOW_FOCUSED_STATE_SET, blr);
setBackgroundDrawable(bg);
}
所以我不确定我是否错误地设置了上述背景可绘制状态之一 - 或者 ListView 是否在内部为该点击延迟进行了某种触摸处理?
谢谢