Android 在AppBarLayout中的工具栏下创建新布局
我使用Android 在AppBarLayout中的工具栏下创建新布局,android,android-toolbar,swiperefreshlayout,android-appbarlayout,Android,Android Toolbar,Swiperefreshlayout,Android Appbarlayout,我使用SwipeRefreshLayout作为布局的根元素,因为我需要刷新屏幕上的所有内容。布局如下所示: 如何在工具栏下创建刷新圈?您的工具栏应该在SwipeRefreshLayout之外。按如下方式做 <CoordinatorLayout> <AppBarLayout> <Toolbar /> <FrameLayout> ... <
SwipeRefreshLayout
作为布局的根元素,因为我需要刷新屏幕上的所有内容。布局如下所示:
如何在工具栏下创建刷新圈?您的工具栏
应该在SwipeRefreshLayout
之外。按如下方式做
<CoordinatorLayout>
<AppBarLayout>
<Toolbar />
<FrameLayout>
...
</FrameLayout>
<TabLayout />
</AppBarLayout>
<SwipeRefreshLayout>
<NestedScrollView>
<ViewPager />
</SwipeRefreshLayout>
</CoordinatorLayout>
...
您的工具栏应位于SwiperFreshLayout
之外。按如下方式做
<CoordinatorLayout>
<AppBarLayout>
<Toolbar />
<FrameLayout>
...
</FrameLayout>
<TabLayout />
</AppBarLayout>
<SwipeRefreshLayout>
<NestedScrollView>
<ViewPager />
</SwipeRefreshLayout>
</CoordinatorLayout>
...
您是否确实要显示圆?如果要在FrameLayout上显示,应将SwiperFreshLayout置于FrameLayout之上,而不将SwiperFreshLayout设置为根视图
试试这个,让我知道它是否有效
<CoordinatorLayout>
<NestedScrollView>
<ViewPager />
<AppBarLayout>
<Toolbar />
<SwipeRefreshLayout>
<FrameLayout>
...
</FrameLayout>
</SwipeRefreshLayout>
<TabLayout />
</CoordinatorLayout>
...
您是否确实要显示圆?如果要在FrameLayout上显示,应将SwiperFreshLayout置于FrameLayout之上,而不将SwiperFreshLayout设置为根视图
试试这个,让我知道它是否有效
<CoordinatorLayout>
<NestedScrollView>
<ViewPager />
<AppBarLayout>
<Toolbar />
<SwipeRefreshLayout>
<FrameLayout>
...
</FrameLayout>
</SwipeRefreshLayout>
<TabLayout />
</CoordinatorLayout>
...
您似乎想要实现一个,如中所述。为此,应使用setProgressViewEndTarget()
或setProgressViewOffset()
方法:
// This method will offset the end of the indicator animation
int target = getResources().getDimensionPixelSize(R.dimen.indicator_end_target);
mSwipeRefreshLayout.setProgressViewEndTarget(true, target);
// This method allows you to set both the start and end values for the indicator animation
int start = getResources().getDimensionPixelSize(R.dimen.indicator_start);
int end = getResources().getDimensionPixelSize(R.dimen.indicator_end);
mSwipeRefreshLayout.setProgressViewOffset(true, start, end);
在这些方法中,通过将第一个参数设置为true
,指示器将在其进入视图时设置其缩放动画,而不仅仅是被包含视图的边缘剪裁。似乎您想要实现一个,如中所述。为此,应使用setProgressViewEndTarget()
或setProgressViewOffset()
方法:
// This method will offset the end of the indicator animation
int target = getResources().getDimensionPixelSize(R.dimen.indicator_end_target);
mSwipeRefreshLayout.setProgressViewEndTarget(true, target);
// This method allows you to set both the start and end values for the indicator animation
int start = getResources().getDimensionPixelSize(R.dimen.indicator_start);
int end = getResources().getDimensionPixelSize(R.dimen.indicator_end);
mSwipeRefreshLayout.setProgressViewOffset(true, start, end);
在这些方法中,通过将第一个参数设置为true
,指示器将在进入视图时设置其缩放动画,而不仅仅是被包含视图的边缘剪裁。您到底想做什么?@VishalPatoliyaツ 只需“在工具栏下画一个刷新圈”此布局用于活动或片段?是否删除要刷新框架布局中的内容以及查看页面中的内容?但是您希望SwipeRefreshLayout
指示器显示在FrameLayout
中内容的顶部吗?您希望能够下拉FrameLayout
和ViewPager
来刷新这两组内容吗?您实际想做什么?@VishalPatoliyaツ 只需“在工具栏下画一个刷新圈”此布局用于活动或片段?是否删除要刷新框架布局中的内容以及查看页面中的内容?但是您希望SwipeRefreshLayout
指示器显示在FrameLayout
中内容的顶部吗?您希望能够下拉FrameLayout
以及ViewPager
以刷新这两组内容吗?那么,如果没有工具栏,AppBarLayout应该如何正常工作?谢谢,但这将使SwipeRefreshLayout完全低于AppBarLayout,包括其中的工具栏和其他视图。我只想让圆圈出现在工具栏下方。这对我来说几乎是不可能的。@BetaKuang您可以做的另一个选择是使用这个布局视图的层次结构,在SwiperFreshLayout的onRefresh()中,您可以编写代码来刷新所有视图。那么,如果没有工具栏,AppBarLayout应该如何正常工作?谢谢,但这将使SwiperFreshLayout完全低于AppBarLayout,包括工具栏和其中的其他视图。我只想让圆圈出现在工具栏下方。这对我来说几乎是不可能的。@BetaKuang您可以做的另一种选择是使用布局视图的层次结构,在SwipeRefreshLayout的onRefresh()中,您可以编写代码来刷新所有视图。谢谢您的回答。如果FrameLayout
具有固定的高度,这可能会起作用,因为SwipeRefreshLayout
将强制子视图与整个大小匹配,因此SwipeRefreshLayout
的高度不能设置为wrap\u content
。不幸的是,在我的例子中,FrameLayout
的高度是动态的,因此此解决方案将使FrameLayout
完全不可见。您能否指定在视图中打开,或在FrameLayout和ViewPager上启动刷新操作?谢谢您的回答。如果FrameLayout
具有固定的高度,这可能会起作用,因为SwipeRefreshLayout
将强制子视图与整个大小匹配,因此SwipeRefreshLayout
的高度不能设置为wrap\u content
。不幸的是,在我的例子中,FrameLayout
的高度是动态的,因此此解决方案将使FrameLayout
完全不可见。您能否在视图中指定on或要在FrameLayout和ViewPager上启动刷新操作?这可能是目前为止最好的解决方案。谢谢!我确信“共面指示器”是一个精确的术语,但我无法忘记这样一个事实,那就是McFly似乎会将某些东西连接到他的磁通电容器上。这可能是目前为止最好的解决方案。谢谢!我确信“共面指示器”是一个精确的术语,但我无法忘记这样一个事实,那就是McFly似乎会将某些东西连接到他的磁通电容器上。