我以线性布局显示四个textView
。我用户setTag()
每个文本视图。
当我ACTION_UP
然后ACTION_MOVE
然后ACTION_UP
. 事件工作正常。 但我getTag
textView
是一样的。表示视图对象不起作用。
public class MainActivity extends Activity {
TextView t[] = new TextView[4];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout linear = (LinearLayout) findViewById(R.id.linear);
for(int i=0;i<t.length;i++) {
t[i] = new TextView(this);
t[i].setTag(i);
String s = "Hello : "+i;
t[i].setText(s);
t[i].setTag(i);
linear.addView(t[i]);
t[i].setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
if(arg1.getAction() == MotionEvent.ACTION_UP) {
Log.d("up ", "tag: "+arg0.getTag());
} else if(arg1.getAction() == MotionEvent.ACTION_DOWN) {
Log.d("down ", "tag: "+arg0.getTag());
} else if(arg1.getAction() == MotionEvent.ACTION_MOVE) {
Log.d("move ", "tag: "+arg0.getTag());
}
return true;
}
});
}
}
下面是我的日志。
我ACTION_DOWN
textview0
搬到textview2
.事件工作正常。 但观点的标签不是改变的。 我在每个触摸事件上都会得到相同的标签。 我的日志是 :
11-28 00:55:06.589: D/down(1980): tag: 0
11-28 00:55:06.899: D/move(1980): tag: 0
11-28 00:55:06.929: D/move(1980): tag: 0
11-28 00:55:07.011: D/move(1980): tag: 0
11-28 00:55:07.103: D/move(1980): tag: 0
11-28 00:55:07.139: D/move(1980): tag: 0
11-28 00:55:07.319: D/move(1980): tag: 0
11-28 00:55:07.419: D/move(1980): tag: 0
11-28 00:55:07.522: D/up(1980): tag: 0
怎么了?
尝试像这样使您的视图最终确定:
LinearLayout linear = (LinearLayout) findViewById(R.id.linear);
for(int i=0;i<t.length;i++)
{
final TextView t = new TextView(this);
t[i] = t
t[i].setTag(i);
String s = "Hello : "+i;
t[i].setText(s);
t[i].setTag(i);
linear.addView(t[i]);
t[i].setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View arg0, MotionEvent arg1)
{
if(arg1.getAction() == MotionEvent.ACTION_UP)
{
Log.d("up ", "tag: "+arg0.getTag());
}
else if(arg1.getAction() == MotionEvent.ACTION_DOWN)
{
Log.d("down ", "tag: "+arg0.getTag());
}
else if(arg1.getAction() == MotionEvent.ACTION_MOVE)
{
Log.d("move ", "tag: "+arg0.getTag());
}
return true;
}
});
}