2013-06-04 73 views
11

在我ViewPager,有一個的ImageButton和TextView的拿住的LinearLayout,現在我將其更改爲一個TextView的與coupound繪製。不能滾動ViewPager它

<?xml version="1.0" encoding="utf-8"?> 
<com.iclinux.android.custom_views.NoScrollTextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:iclinux="http://schemas.android.com/apk/res-auto" 
    android:clipChildren="false" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:singleLine="true" 
    android:gravity="center" 
    android:paddingLeft="8dp" 
    android:paddingRight="8dp" 
    android:drawableTop="@drawable/icon_bg" 
    style="@style/EllipsizedSingleLineTextView" 
    android:textSize="@dimen/grid_item_title_size" 
    > 
</com.iclinux.android.custom_views.NoScrollTextView> 

我的問題是:觸摸TextView的時候我無法讓左或右,但如果去掉「機器人:比重=」中心」,它的工作原理......遺憾的是,文本不居中反正.. ?

public class NoScrollTextView extends TextView { 

    public NoScrollTextView(Context context) { 
     super(context); 
    } 

    public NoScrollTextView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public NoScrollTextView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

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

這裏發生了什麼非常感謝

+0

一個有趣的錯誤,我來翻過。謝謝。我給了你一個投票。 – tasomaniac

+1

只是同樣的問題,找到了答案[here](http://stackoverflow.com/questions/15470755/textview-inside-viewpager-intercepts-touch-events) – darktiny

回答

9

通過覆蓋解決:

@TargetApi(14) 
@Override 
public boolean canScrollHorizontally(int direction) { 
    return false; 
} 
16

android:singleLine="true"力量android:scrollHorizontally被設置爲true,並根據只有當你改變android:gravity(即我的測試默認引力似乎不會給這個問題)。

我通過簡單地用android:maxLines="1"

更換android:singleLine="true"此更改後解決了一個TextView這個問題,我沒有更多的問題與ViewPager。現在它按預期滾動,而觸摸元素與android:gravity="right"

+0

OMG!我在這樣一個愚蠢的問題上浪費了兩個小時,終於找到了解決問題的答案!我無法相信谷歌把這些糟糕的錯誤放進去。 –

+1

OMG!簡而言之,這就是Android。 – milosmns

1

我把它做做:

textView.setHorizontallyScrolling(false);