我使用下面的代码隐藏了滚动操作栏,但它在顶部留下了空白区域。我也经历了其他一些帖子,但没有帮助
我正在使用Xamarin
我的布局:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false">
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:paddingTop="?attr/actionBarSize"
android:clipToPadding="false"
android:layout_height="match_parent" />
<LinearLayout
android:id="@+id/toolbarContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="?attr/colorPrimary">
<include
android:id="@+id/toolbar"
layout="@layout/toolbar" />
</LinearLayout>
</FrameLayout>
工具栏:
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
local:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
recyclerview设置
_recyclerView = _view.FindViewById<RecyclerView>(Resource.Id.videoRecyclerView);
_recyclerView.AddOnScrollListener(new ScrollListner(Activity, _recyclerView));
和滚动列表器 public virtual void OnMoved(int distance) { _toolbarContainer.TranslationY = -distance; }
public virtual void OnShow()
{
_toolbarContainer.Animate().TranslationY(0).SetInterpolator(new DecelerateInterpolator(2)).Start();
}
public virtual void OnHide()
{
_toolbarContainer.Animate().TranslationY(-_toolbarHeight).SetInterpolator(new AccelerateInterpolator(2)).Start();
}
public override void OnScrollStateChanged(RecyclerView recyclerView, int newState)
{
base.OnScrollStateChanged(recyclerView, newState);
if (newState == RecyclerView.ScrollStateIdle)
{
if (_totalScrolledDistance < _toolbarHeight)
{
SetVisible();
}
else
{
if (_controlsVisible)
{
if (_toolbarOffset > HideThreshold)
{
SetInvisible();
}
else
{
SetVisible();
}
}
else
{
if ((_toolbarHeight - _toolbarOffset) > ShowThreshold)
{
SetVisible();
}
else
{
SetInvisible();
}
}
}
}
}
public override void OnScrolled(RecyclerView recyclerView, int dx, int dy)
{
base.OnScrolled(recyclerView, dx, dy);
ClipToolbarOffset();
OnMoved(_toolbarOffset);
if ((_toolbarOffset < _toolbarHeight && dy > 0) || (_toolbarOffset > 0 && dy < 0))
{
_toolbarOffset += dy;
}
if (_totalScrolledDistance < 0)
{
_totalScrolledDistance = 0;
}
else
{
_totalScrolledDistance += dy;
}
}
private void ClipToolbarOffset()
{
if (_toolbarOffset > _toolbarHeight)
{
_toolbarOffset = _toolbarHeight;
}
else if (_toolbarOffset < 0)
{
_toolbarOffset = 0;
}
}
private void SetVisible()
{
if (_toolbarOffset > 0)
{
OnShow();
_toolbarOffset = 0;
}
_controlsVisible = true;
}
private void SetInvisible()
{
if (_toolbarOffset < _toolbarHeight)
{
OnHide();
_toolbarOffset = _toolbarHeight;
}
_controlsVisible = false;
}
我现在已经花了4个多小时尝试了很多东西,但它根本不起作用。 任何帮助表示赞赏。
答案 0 :(得分:1)
根据评论中的建议,您应该使用
协调员布局与工具栏结合使用,并在工具栏上设置scrollflags,如下所示:
$val=<<<AAA
<form> <input type="hidden" name="id" value="$id" /></form>
AAA;
echo $val;
你可以在这里找到很好的例子:
https://mzgreen.github.io/2015/06/23/How-to-hideshow-Toolbar-when-list-is-scrolling(part3)/
有关协调员布局的更多信息:
http://android-developers.blogspot.cz/2015/05/android-design-support-library.html
它会更干净,而不是手动完成这一切。