簡體   English   中英

onTouchListener 不工作

[英]onTouchListener not working

我的活動中有以下代碼。 在我的 xml 中,視頻視圖位於線性布局內。 但是,當單擊視圖時, onTouchListener永遠不會觸發。 我嘗試將onTouchListener更改為vvLive ,但這並沒有做任何事情。 我還嘗試將onTouchListener更改為onClickListener ,但沒有。 有誰知道為什么聽眾沒有開火? 謝謝。

        private VideoView vvLive;
        LinearLayout linearLayoutLiveVideo;

        linearLayoutLiveVideo.setOnTouchListener(new OnTouchListener(){
            public boolean onTouch(View v, MotionEvent event){
                Log.d(TAG, "onTouch entered");
                if(event.getAction() == MotionEvent.ACTION_UP) {
                    Log.d(TAG, "ACTION_UP");

                }
                return false;
            }
        });

編輯:我意識到上面的代碼確實有效。 eclipse 中的某些東西弄亂了 LogCat。 在我重新啟動 eclipse 后,LogCat 打印第一個日志“onTouch 輸入”。 但是,沒有打印“ACTION_UP”。 我將 MotionEvent 更改為MotionEvent.ACTION_DOWN並且 LogCat 現在打印。 為什么ACTION_DOWN有效而ACTION_UP無效?

ACTION_UP 永遠不會發送給您的聽眾,因為您返回 false ,因此不要“消費”該事件。 返回true,您將獲得開始事件(ACTION_DOWN)以及所有后續事件(ACTION_MOVE,然后是ACTION_UP)。

像這樣修改您的代碼並嘗試:

@Override
public boolean onTouchEvent(MotionEvent event) {
    Log.d(TAG, "onTouch entered");
    if(event.getAction() == MotionEvent.ACTION_UP) {
        Log.d(TAG, "ACTION_UP");
        return super.onTouchEvent(event);
    else
        return false;
}

我面臨這個問題,解決方案是: -

1-在您的 xml 中將以下屬性設置為 VideoView

android:clickable="true"

2-只需在您的代碼集中 setOnClickListener 到 VideoView,它就會像魅力一樣工作:

videoView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent=new Intent(CinemaDetailsActivity.this , FullScreenPlayerActivity.class);
        intent.putExtra("url" ,  getIntent().getStringExtra("url"));
        startActivity(intent);
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM