我使用下面的代碼隱藏滾動條上的動作條,但它在頂部留下了空白區域。我通過一些其他職位也去了,但它並沒有幫助隱藏滾動條上的動作欄留下空白空間
我使用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>
工具欄:
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個多小時在此嘗試了很多事情,但它並沒有在所有的工作。 任何幫助表示讚賞。
Android設計支持提供了'CoordinatorLayout',這是一種佈局,它提供了子視圖之間的觸摸事件的額外級別的控制,這是設計庫中許多組件利用的。你應該檢查Xamarin的網站https://components.xamarin.com/gettingstarted/xamandroidsupportdesign – 2016-01-20 13:32:30
@PawanVimukthi你在哪裏建議我使用CoordinatorLayout? – goldsmit409
您應該在活動佈局上使用'CoordinatorLayout'。 'CoordinatorLayout'是一個父視圖,所以你可以在其中使用子視圖。 – 2016-01-20 13:44:01