2013-03-18 119 views
12

我有一個ViewPager包含兩個片段。在任何片段中,我都可以觸摸某個地方,輕掃以切換到另一個片段fragment。其中一個片段包含一個列表。列表中的項目包含一個TextView和一個ImageView。問題是,如果您從點擊ImageView開始拖動,則無問題。但是如果它來自TextView,那麼ViewPager永遠不會知道阻力,因此「順利切換」從未發生過。ViewPager中的TextView攔截觸摸事件

任何線索?

編輯

這張照片是顯示我的GUI是如何。如果拖動從TextViewE開始,它不會開始。 enter image description here

+1

你應該發佈一些代碼。對'ViewView'重寫'TextView'沒有什麼特別之處。 – adneal

+1

@aneal看看圖片是否能更好地解釋我的想法 – tactoth

+0

這讓我感到非常沮喪,我也很樂意看到答案。 TextView在ListView攔截觸摸中,ViewPager變得幾乎不可用。 – pechenie

回答

35

這件事困擾我太多,但我已經成功地找到了答案。

基本上,情況是:如果視圖可以水平滾動,則攔截水平運動事件,並且ViewPager不能再處理它。

由於API級別14 TextViews具有機器人:scrollHorizo​​ntally屬性(和setHorizo​​ntallyScrolling(布爾值)方法),其中,如果設置爲true,使TextView的攔截水平滾動運動的事件。

你可以將它設置爲false,無論是在XML或右邊的代碼,但注意安卓SINGLELINE屬性力量安卓scrollHorizo​​ntally設置爲非常棘手的問題點!但幸運的是,您通常能夠安全地用安全地替換單行屬性android:maxLines =「1」和必要的ellipsize值。

祝你好運!

+1

發現相同的問題,並發現刪除singleLine語句解決。剛發現爲什麼:D。謝謝! –

+0

很抱歉忘記檢查答案很快。非常好。 – tactoth

+0

如果我想將選框設置爲文本視圖,我需要將singleLine設置爲true。有什麼辦法可以避免它,並啓用選框? – berserk

0

可以TextView的覆蓋的的onTouchEvent():

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if (event.getAction() == MotionEvent.ACTION_MOVE) { 
     return false; 
    } 

    return super.onTouchEvent(event); 
} 
相關問題