У меня есть активность, которая состоит из панели инструментов и плейера представления. Его схема выглядит следующим образом:SwipeRefreshLayout внутри 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>
я затем загрузить два фрагмента в поле зрения пейджера. Каждый фрагмент содержит свой собственный SwipeRefreshLayout
. Я покажу одну фрагменты макета:
<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>
Теперь, когда я запускаю деятельность это, кажется, работает. Однако я заметил, что это горизонтально (т.е. перейти на следующую вкладку). Это инициирует swipeRefreshLayout
OnRefreshListener
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
mSwipeRefreshLayout.setRefreshing(true);
DoUpdate();
}
});
Я также испытываю странное визуальное поведение, когда я стараюсь и делать обновление. Знак загрузки (крутящий круг) часто не отображается, и он иногда показывает, но остается маленьким. Я не уверен, что это также является причиной того, что два взгляда противоречат друг другу.
Есть ли способ, которым я могу исправить эту проблему. Я не уверен, как это сделать. Может быть, ограничив SwipeRefreshLayout, чтобы слушать только вертикальные щелчки?
Любые предложения будут очень благодарны.
У меня нет этой проблемы внутри моего проекта, который также использует аналогичную структуру. Можете ли вы опубликовать образец проекта, который воспроизводит эту проблему? – corsair992
Не могли бы вы поделиться своим макетом? Неужели два макета будут мешать друг другу? Если бы я даже нажал кнопку «SwipeRefreshLayout», это вызовет 'OnRefresh()' – Zapnologica
. Перед тем, как любая из этих «ViewGroup» возьмет событие касания, есть интервал отвала, и определяется, было ли перетаскивание более вертикальным или горизонтальным , Как только событие касания захватывается «ViewGroup», он продолжает обрабатывать событие без помех (используя метод 'requestDisallowInterceptTouchEvent()»). Мое приложение и макет довольно сложны, а также конфиденциальны, это поможет, если вы сможете опубликовать проект с минимальной выборкой с этой проблемой (чтобы я мог ее отлаживать). – corsair992