14

ViewPager2 つのフラグメントを含む があります。どのフラグメントでも、場所に触れることができ、スワイプして別の場所に切り替えることができますfragment。フラグメントの 1 つにリストが含まれています。リスト内の項目には oneTextViewと oneが含まれますImageView。問題は、 をタップしてドラッグを開始した場合は問題ありませんImageView。しかし、それが からのものであるTextView場合、抗力は に知られていなかっViewPagerたため、「スムーズな切り替え」は決して起こりませんでした。

これについての手がかりはありますか?

編集

この図は、私の GUI がどのようになっているかを示すためのものです。ドラッグが TextViewE から開始された場合、開始されません。 ここに画像の説明を入力

4

2 に答える 2

40

このことも気になりましたが、なんとか答えを見つけることができました。

基本的には、ビューが水平方向にスクロールできる場合、水平方向のモーション イベントをインターセプトし、ViewPagerはそれを処理できなくなります。

API レベル 14のTextView にはandroid:scrollHorizo​​ntallyプロパティ (およびsetHorizo​​ntallyScrolling(boolean)メソッド) があるため、true に設定すると、TextView は水平スクロール モーション イベントをインターセプトします。

XML またはコード内で false に設定できますが、注意してください: android:singleLineプロパティはandroid:scrollHorizo​​ntallyを強制的にtrueに設定します! 非常にトリッキーなポイント!しかし幸いなことに、通常、単一行のプロパティをandroid:maxLines="1"と必要なellipsize値で安全に置き換えることができます。

幸運を!

于 2013-08-11T12:20:53.857 に答える
0

TextView の onTouchEvent() をオーバーライドできます。

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

    return super.onTouchEvent(event);
}
于 2013-06-05T04:22:58.913 に答える