getTag() of TextView on OnTouchEvent in android



我以线性布局显示四个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;
            }
        });
    }

最新更新