android处理TextView上的滚动和单击事件

时间:2012-11-27 04:11:11

标签: android textview android-event android-scroll

我的Android应用程序有问题。我正在使用带有垂直scrollBar的简单Textview来显示歌曲中的歌词。问题是,在我的活动中,我在同一个Textview上设置了一个Onclick事件。因此,当我在textview中滚动歌词时,当我从屏幕上松开手指时,活动会记录一个点击事件。我不想在滚动后发生onClick事件。

这是我到目前为止所做的,但由于我使用的onLongClick事件不够精确,因此效果不佳:

public class NowPlayingActivity extends Activity implements ckListener,OnLongClickListener
{
   private TextView lyrics;
   private static final String TAG_LYRICS = "LYRICS";   
   @Override
   protected void onCreate(Bundle savedInstanceState)
   {
       this.lyrics = (TextView) this.findViewById(R.id.now_playing_Lyrics);
       this.lyrics.setOnClickListener(this);
       this.lyrics.setMovementMethod(new ScrollingMovementMethod());
       this.lyrics.setOnLongClickListener(this);
}
public void onClick(View v)
{
    String tag = (String) v.getTag();
    if (tag.equals(NowPlayingActivity.TAG_LYRICS))
    {
        if (this.scrolled) //this way, the click action doesnt occur after a scroll
        {
            this.scrolled = false;
        }
        else
        {
            this.scrolled = false;
            this.artwork.setVisibility(View.VISIBLE);
            this.lyrics.setVisibility(View.GONE);
        }
    }
    public boolean onLongClick(View arg0)
    {
        this.scrolled =  true;

        return this.scrolled;
    }

我该怎么做才能让它更“准确”(所以我不必长按它来工作)

谢谢!

1 个答案:

答案 0 :(得分:2)

将您的textview放在scrollview中。

<ScrollView
        android:id="@+id/content_scroll"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_margin="7dip"
        android:scrollbars="none" >

        <TextView
            android:id="@+id/fileContent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dip" />
    </ScrollView>

然后它应该正常工作。希望它有所帮助