Articles of swiperefreshlayout

什么是正确的方式来使用工具栏和SwipeRefreshLayout?

我正在尝试使用SwipeRefreshLayout和一个工具栏,但每次我都使用工具栏上出现的进度圈,这在devise方面真的很糟糕。 我试着把SwipeRefreshLayout放在工具栏下面,但是这并不起作用,进度圈仍然出现在它的顶部(状态栏上方)。 我想要像在Gmail应用程序中一样使用工具栏和布局。 我正在使用AppCompat库。 这是我的代码: <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/swipe_container" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent"> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent"> <include layout="@layout/bluetooth_toolbar" android:id="@+id/bluetooth_toolbar"/> <TextView android:id="@+id/swipeTo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Swipe down to refresh" android:textSize="20sp" android:layout_below="@+id/bluetooth_toolbar" android:layout_centerHorizontal="true" /> <ListView android:id="@+id/newDevices" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/swipeTo" android:layout_marginTop="50dp" /> <ListView android:id="@+id/pairedDevices" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/newDevices" android:layout_marginTop="50dp" /> </RelativeLayout> </ScrollView> </android.support.v4.widget.SwipeRefreshLayout> 和 public class BluetoothActivity […]

禁用单击SwipeRefreshLayout内的RecyclerView

我使用RecyclerView实现了SwipeRefreshLayout ,我需要在OnRefreshListener期间禁用适配器项目。 我尝试了以下的方法,但通常点击发生: mRecyclerView.setEnabled(false); mRecyclerView.setClickable(false);

带有空TextView的Android SwipeRefreshLayout无法正常工作

我想要做的是,允许用户轻扫和刷新列表,数据是否存在并不重要。 但是,当数据在列表视图中只有列表视图应该是可见的,而当数据不存在时,空的textview应该是可见的。 在这两种情况下,用户必须能够通过刷卡来刷新列表。 我在这个讨论中尝试了一些解决scheme,但是没有一个听起来像是在工作,把两个SwipeToRefresh工作得很好,但是在从服务器获取数据时显示空容器。 我试图用我自己的逻辑包装ListView和Textview在一个Relative / FrameLayout里面,但是SwipeToRefresh只接受一个视图的行为 这是我试过的一个XML片段 <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/activity_main_swipe_refresh_layout" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="0.945" > <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:id="@+id/event_list_eventlist" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="@color/event_background" android:dividerHeight="1dp" > </ListView> <TextView android:id="@+id/event_txt_nothing_found" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerInParent="true" android:layout_centerVertical="true" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@android:color/darker_gray" android:visibility="gone" /> </RelativeLayout> </android.support.v4.widget.SwipeRefreshLayout> 请帮忙

SwipeRefreshLayout不拦截NestedScrollingChild的MotionEvent

我正在使用一个NestedScrollWebView (深受NestedScrollWebView影响),它解决了许多与在CoordinatorLayout使用WebView相关的已知 问题 。 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <android.support.design.widget.AppBarLayout android:id="@+id/appBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.ActionBar"> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_scrollFlags="enterAlways|scroll|snap"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:titleTextAppearance="@style/TextAppearance.AppCompat.Subhead" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> <ProgressBar android:id="@+id/progressBar" android:layout_width="match_parent" android:layout_height="2dp" android:layout_gravity="bottom" android:visibility="gone" style="@style/Widget.AppCompat.ProgressBar.Horizontal"/> </FrameLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipeRefreshLayout" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <com.example.app.widget.NestedScrollWebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent"/> </android.support.v4.widget.SwipeRefreshLayout> </android.support.design.widget.CoordinatorLayout> NestedScrollWebView适用于AppBarLayout和enterAlways|scroll|snap滚动标志,但与SwipeRefreshLayout 。 我从NestedScrollWebView删除了以下行: setOverScrollMode(WebView.OVER_SCROLL_NEVER); 这确保视图不会显示在滚动指示器之上。 我想要滚动显示指示器,但是即使启用了滚动条,也不会出现以下情况。 据我所知, SwipeRefreshLayout应该拦截任何导致刷新指示符被拖动的触摸事件(基于onInterceptTouchEvent() )。 SwipeRefreshLayout也拒绝任何requestDisallowInterceptTouchEvent()给嵌套滚动的子任何启用; 这对于NestedScrollWebView是正确的。 […]

SwipeRefreshLayout干扰setOnScrollListener

每次我向上或向下滚动列表,我都用OnScrollListener隐藏(或取消隐藏)一些视图。 这是附加到我的ListView的代码。 lv.setOnScrollListener(new OnScrollListener() { private int mLastFirstVisibleItem; private boolean mIsScrollingUp = true; private LinearLayout ll = (LinearLayout) getActivity() .findViewById(R.id.llSearchPlaces); @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (view.getId() == lv.getId()) { final int currentFirstVisibleItem = lv .getFirstVisiblePosition(); if (currentFirstVisibleItem > […]

实施轻扫以刷新布局后,Recycler视图不能正确滚动

在实施刷卡刷新视图之前,回收者视图运行正常,但无论何时尝试向下滚动回收视图刷卡以刷新干扰并阻碍滚动移动。 这是问题的屏幕截图: (请注意刷新布局来回收视图向下滚动) 这是我的布局片段: <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/activity_main_swipe_refresh_layout" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:wheel="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/availableTaskRecyclerView" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical" /> <RelativeLayout android:id="@+id/progress_wheel" android:visibility="gone" tools:visibility="visible" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal|center_vertical" android:background="@color/transparentLoaderBackground"> <com.pnikosis.materialishprogress.ProgressWheel android:layout_width="50dp" android:layout_height="50dp" wheel:matProg_barColor="@color/white" wheel:matProg_barWidth="1dp" wheel:matProg_progressIndeterminate="true"/> </RelativeLayout> <RelativeLayout android:id="@+id/no_available_tasks" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" tools:visibility = "visible" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="No tasks currently […]

SwipeRefreshLayout隐藏在空的RecyclerView上

我有一个SwipeRefreshLayout的Fragment ,然后RecyclerView作为孩子。 当Fragment被提交时,它开始与服务器交谈,以便检索一些数据并填充将提供RecyclerView的CustomAdapter。 用户可以通过向下滑动或按下ActionBar上的button来刷新内容。 在后一种情况下,我手动调用swipeRefreshLayout.setRefreshing(true) 。 所以到现在为止没有麻烦。 当我在RecyclerView( onStart() )的第一次加载过程中手动调用刷新状态时,会出现问题。 进度指示器没有出现,我假设因为RecyclerView仍然是空的,因为它需要几秒钟来检索所有的数据… 我给你留下一些代码。 片段代码: public class MyFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View mView = inflater.inflate(R.layout.fragment_stop, container, false); mRecyclerView = (RecyclerView) mView.findViewById(R.id.recyclerView1); mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST)); mRecyclerView.setHasFixedSize(true); mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); mRecyclerView.setItemAnimator(new DefaultItemAnimator()); //SwipeRefreshLayout retrieved and configured swipeLayout = […]

SwipeRefreshLayout在片段创build上没有animation

我使用android.support.v4.widget.SwipeRefreshLayout与android.support.v7.widget.RecyclerView 。 在片段视图创build我需要显示SwipeRefreshLayoutanimation。 但是,当我打电话setRefreshing(true)没有任何反应。 但是当我刷新数据animation更改。 我想这个animation在SwipeRefreshLayout里面没有显示没有孩子。 如何以最佳方式显示此animation?

AppBarLayout + TabLayout + CollapsingToolbarLayout + SwipeToRefresh

我遇到了很多与我的问题有关的问题,但没有人发现我想要的行为。 我想要一个带有选项卡和应用栏的视图页面,当所包含的片段是可滚动的并且滚动(朝向底部)时,我想让应用栏消失,但是向顶部滚动时离开这些选项卡,以重新a光。 其中一些片段包含SwipeToRefresh布局(有时会导致问题)。 我尝试了很多configuration,总是出现错误。 现在我没有崩溃的效果(它总是隐藏的) <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context=".MainPagerActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:id="@+id/app_bar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginEnd="64dp" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll|enterAlways"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabGravity="fill" app:tabIndicatorHeight="6dp" app:tabMode="fixed" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/main_pager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/app_bar_layout" […]

如何将int数组中的颜色资源id从array.xml传递给SwipeRefreshLayout.setColorSchemeResources

我有Android的SwipeRefreshLayout工作,并试图自定义跨所有拉的颜色刷新整个应用程序。 为了遵循DRY原则,我试着将所需的颜色移动到array.xml中,如下所示: <resources> <array name="swipeRefreshColors"> <item>@color/pink</item> <item>@color/green</item> </array> </resources> 但是,当我尝试将它们导入刷卡刷新: swipeRefreshLayout.setColorSchemeResources(R.array.swipeRefreshColors); 我得到一个资源$ NotFoundException: android.content.res.Resources$NotFoundException: Resource ID #0x7f060001 at android.content.res.Resources.getValue(Resources.java:1233) at android.content.res.Resources.getColor(Resources.java:887) at android.support.v4.widget.SwipeRefreshLayout.setColorSchemeResources(SwipeRefreshLayout.java:477) 我已经尝试了一些东西,例如子类化SwipeRefreshLayout代码和硬编码颜色,但是这绝对是一个黑客。 必须有一种方法来引用Activity中的一组颜色来自定义它。 任何帮助将不胜感激!