Странное поведение ClickableSpan: onClick () вызывается при щелчке по пустому пространству

У меня есть TextView с ClickableSpan , в котором layout_height и layout_width равны wrap_content.

Когда текст в TextView не слишком длинный, он работает нормально. Когда текст достаточно длинный и занимает 2 строки, он тоже работает нормально, но ведет себя странно.

То есть, когда я щелкнул пустое пространство второй строки (еще не заполненное текстом, а часть TextView ), вызывается обратный вызов ClickableSpan onClick () .

Я этого не ожидал, потому что щелкнул только пустое место, но не растянутый текст. Хоть и не сильно влияет, но хочу знать, что позади.

Я установил ClickableSpan следующим кодом:

TextView tv = (TextView) findViewById(R.id.text);
tv.setText("TEXT TEXT TEXT TEXT");
SpannableStringBuilder ssb = new SpannableStringBuilder();
ssb.append(tv.getText());
ssb.setSpan(new TestClickableSpan(), ssb.length()-5, ssb.length(), 0);
tv.setText(ssb);
tv.setMovementMethod(LinkMovementMethod.getInstance());
tv.setOnTouchListener(new TextViewOnTouchListener());

TextViewOnTouchListener:

class TextViewOnTouchListener implements OnTouchListener{

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            Log.d("TextView", "onTouch");
            return false;
        }       
}

TestClickableSpan:

class TestClickableSpan extends ClickableSpan{

        @Override
        public void onClick(View arg0) {
            Log.d("ClickableSpan", "Confirm OnClick: "+arg0.toString());
        }       
    }
11
задан Yeung 14 February 2012 в 09:18
поделиться