Tôi có một hoạt động bao gồm Thanh công cụ và máy nhắn tin lượt xem. bố trí của nó như sau:SwipeRefreshLayout bên trong ViewPager
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="112dp"
android:layout_gravity="bottom"
tools:context=".Rhino68PanelActivity" />
<LinearLayout
android:id="@+id/toolbarContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<include
android:id="@+id/app_bar"
layout="@layout/app_bar" />
<include
android:id="@+id/tap_strip"
layout="@layout/tab_strip" />
</LinearLayout>
Sau đó tôi tải hai mảnh vào xem máy nhắn tin. Mỗi mảnh chứa SwipeRefreshLayout
của riêng nó. Tôi sẽ hiển thị một mảnh bố trí:
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/swipe_refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="12"
tools:context=".Rhino68PanelActivity$DummySectionFragment">
...
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView_panel_status"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false" />
</LinearLayout>
Bây giờ khi tôi chạy hoạt động có vẻ như để làm việc. Tuy nhiên tôi đã nhận thấy đó là tôi trượt theo chiều ngang (tức là để đi đến tab tiếp theo). Nó gây nên swipeRefreshLayout
OnRefreshListener
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
mSwipeRefreshLayout.setRefreshing(true);
DoUpdate();
}
});
Tôi cũng trải qua hành vi thị giác kỳ lạ khi tôi cố gắng và làm mới. Các dấu hiệu tải (vòng tròn quay) thường không hiển thị, và đôi khi nó cho thấy nhưng vẫn nhỏ. Tôi không chắc liệu đây có phải là nguyên nhân của hai quan điểm xung đột với nhau hay không.
Có cách nào để tôi có thể khắc phục sự cố này không. Tôi không chắc chắn như thế nào. Có thể bằng cách giới hạn SwipeRefreshLayout để chỉ nghe các lần vuốt dọc?
Mọi đề xuất sẽ được đánh giá rất nhiều.
Tôi không có vấn đề này bên trong dự án của tôi, cũng sử dụng cấu trúc tương tự. Bạn có thể đăng một dự án mẫu để tái tạo vấn đề này không? – corsair992
Bạn có muốn chia sẻ bố cục của mình không? Chắc chắn hai bố cục sẽ ảnh hưởng lẫn nhau? Nếu tôi thậm chí chỉ cần ghi âm 'SwipeRefreshLayout' nó sẽ kích hoạt' OnRefresh() ' – Zapnologica
Có một khoảng thời gian slop trước khi một trong các' ViewGroup' tiếp quản sự kiện cảm ứng, và nó được xác định bởi việc kéo là dọc hay ngang . Sau khi một sự kiện cảm ứng được thực hiện bởi một 'ViewGroup', nó tiếp tục xử lý sự kiện mà không có sự can thiệp (sử dụng phương thức' requestDisallowInterceptTouchEvent() '). Ứng dụng và bố cục của tôi khá phức tạp và cũng bảo mật, nó sẽ giúp ích nếu bạn có thể đăng một dự án mẫu tối thiểu với vấn đề này (để tôi có thể gỡ lỗi nó). – corsair992