在这种情况下,我试图使我的侧面菜单由textviews组成,可以互动。 完成像onClick这样简单的事情是没有问题的。但是我希望用户能够从示例中拖动:1到9.然后应用程序会注意到拖动的内容和停止的位置。
我遇到的一个大问题是,当我开始触摸其中一个数字并将手指放在屏幕上时。 touchevent只会对我触及的第一个号码作出反应。无论我在哪里拖我的手指。所以这对我来说是个大问题。我试过添加一个onHoverListener。但那个人根本没有反应
protected void setupFastScrollList(){ LinearLayout linearLayout; linearLayout =(LinearLayout)findViewById(R.id.history_side_index);
TextView textView; int j = 6; for(int i = 0; i < 24; i++) { textView = (TextView) getLayoutInflater().inflate(R.layout.tracker_history_sidemenu_item,null); /* Add 0 infront or not */ String t = String.valueOf(j); if(t.length() == 1) { t = "0"+t; } textView.setText(String.valueOf(t)); linearLayout.addView(textView); j++; if(j == 24) { j = 0; } textView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { TextView txt = (TextView) view; Log.d("LOCATION","OnTouch: " + txt.getText()); return false; } }); textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { TextView txt = (TextView) view; Log.d("LOCATION","OnClick: " + txt.getText()); } }); } }
答案 0 :(得分:0)
您需要编写自定义ViewGroup并覆盖onInterceptTouchEvent。
class MyViewGroup extends LinearLayout {
public boolean onInterceptTouchEvent(TouchEvent event) {
// Check if the drag is done and return true to steal the touchevents away from the textviews.
}
public boolean onTouch(TouchEvent event) {
// You will end up here after you return true from onInterceptTouchEvent
}
}