[解決済み] SwipeRefreshLayout + ViewPagerで、水平スクロールのみ制限?
2023-01-08 19:26:19
質問
私が実装した
SwipeRefreshLayout
と
ViewPager
を使用していますが、大きな問題があります。ページを切り替えるために左/右にスワイプしようとすると、スクロールの感度が高すぎるのです。少し下にスワイプするだけで
SwipeRefreshLayout
も更新されます。
水平方向のスワイプを開始するタイミングを制限し、スワイプが終わるまで強制的に水平方向のみにしたいです。つまり、指が水平方向に動いているときは、垂直方向のスワイプをキャンセルしたいのです。
この問題が発生するのは
ViewPager
を下にスワイプすると
SwipeRefreshLayout
が発生し(バーが表示され)、その後水平方向に指を動かすと、やはり垂直方向のスワイプしかできません。
を拡張してみました。
ViewPager
クラスを拡張しようとしましたが、全く動作しません。
public class CustomViewPager extends ViewPager {
public CustomViewPager(Context ctx, AttributeSet attrs) {
super(ctx, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
boolean in = super.onInterceptTouchEvent(ev);
if (in) {
getParent().requestDisallowInterceptTouchEvent(true);
this.requestDisallowInterceptTouchEvent(true);
}
return false;
}
}
レイアウトのxmlです。
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/viewTopic"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.myapp.listloader.foundation.CustomViewPager
android:id="@+id/topicViewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.v4.widget.SwipeRefreshLayout>
どんな助けでも感謝します、ありがとう
どのように解決するのですか?
何も拡張することなく、非常に簡単に解決できます。
mPager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mLayout.setEnabled(false);
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
mLayout.setEnabled(true);
break;
}
return false;
}
});
うまくいく
関連
-
[解決済み】Android "ビュー階層を作成した元のスレッドだけが、そのビューに触れることができる"
-
[解決済み】IllegalStateException: ViewPager で onSaveInstanceState の後にこのアクションを実行できません。
-
[解決済み] ViewPagerで指のスワイプによるページングを無効にし、プログラムによるスワイプはできるようにするにはどうすればよいですか?
-
[解決済み] ビューページャー setonpagechangelistener 非推奨
-
[解決済み] ViewPagerでFragmentが表示されるタイミングを決定する方法
-
[解決済み] ViewPager PagerAdapter がビューを更新しない
-
[解決済み] ViewPagerとフラグメント - フラグメントの状態を保存する正しい方法は何ですか?
-
[解決済み】ViewPagerを動的に更新しますか?
-
[解決済み] onCreate(Bundle savedInstanceState)とは?
-
[解決済み] TextView.setTextSizeの挙動がおかしい - テキストビューのテキストサイズを画面ごとに動的に設定する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] RecyclerView.Stateを使って、RecyclerViewのスクロール位置を保存するには?
-
[解決済み] プログラムでソフトキーボードを開く
-
[解決済み] Android Navigation Architecture Component - 現在表示されているフラグメントを取得する
-
[解決済み] アプリ内課金テスト:android.test.purchased already owned
-
[解決済み] これはどういうことですか?失敗 [INSTALL_FAILED_CONTAINER_ERROR]?
-
[解決済み] Android Studioの「未実装メソッドの追加」機能
-
[解決済み] アンドロイドのクライアントでヒープアップデートを有効にする方法
-
[解決済み] FragmentPagerAdapterのgetItemが呼び出されない
-
[解決済み] 文字列リソースにHTML?
-
[解決済み] WhatsAppでメッセージを送信する