android-Umano SlidingPanel中状态栏下方的滑动布局

android-Umano SlidingPanel中状态栏下方的滑动布局,第1张

概述我已经使用https://github.com/umano/AndroidSlidingUpPanel实现了UmanoSlidingPanel.除了滑动面板展开后,滑动内容(sliding_view)移到状态栏下方,一切都正常.我该如何避免呢?<itemname="android:windowTranslucentStatus">true</item>来自styles.xml的内容,但这也使状态栏对

我已经使用https://github.com/umano/AndroidSlidingUpPanel实现了UmanoSlIDingPanel.除了滑动面板展开后,滑动内容(slIDing_vIEw)移到状态栏下方,一切都正常.我该如何避免呢?

 <item name="androID:windowTranslucentStatus">true</item> 

来自styles.xml的内容,但这也使状态栏对于主要内容也不透明.有任何解决这个问题的方法吗?

<com.sothree.slIDinguppanel.SlIDingUpPanelLayout xmlns:sothree="http://schemas.androID.com/apk/res-auto"    androID:ID="@+ID/slIDing_layout"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:gravity="bottom"    sothree:umanoDragVIEw="@+ID/firstPanelDragArea"    sothree:umanopanelHeight="@dimen/bottom_panel_height"    sothree:umanoShadowHeight="4dp">    <linearLayout        androID:layout_wIDth="match_parent"        androID:layout_height="match_parent"        androID:orIEntation="vertical">        <include            androID:ID="@+ID/toolbar"            layout="@layout/toolbar" />        <FrameLayout            androID:ID="@+ID/frame_container"            androID:layout_wIDth="match_parent"            androID:layout_height="match_parent" />    </linearLayout>    <!-- SLIDING LAYOUT -->    <linearLayout        androID:ID="@+ID/firstPanelDragArea"        androID:layout_wIDth="match_parent"        androID:layout_height="match_parent"        androID:orIEntation="vertical">        <include layout="@layout/slIDing_vIEw" />    </linearLayout>

styles.xml

 <style name="Apptheme" parent="@style/theme.AppCompat">    <item name="windowActionbar">false</item>    <item name="androID:windowNoTitle">true</item>    <item name="androID:windowTranslucentNavigation">true</item>    <item name="androID:windowDrawsSystembarBackgrounds">true</item>    <item name="androID:windowTranslucentStatus">true</item>    <item name="windowNoTitle">true</item></style>

编辑

  public voID onPanelSlIDe(VIEw panel, float slIDeOffset) {              if (slIDeOffset > 0.5 && !flagtransparent) {                getwindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);                getwindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);                flagtransparent = true;                Log.i(TAG, "onPanelSlIDe, offset " + slIDeOffset);            } else if (slIDeOffset < 0.5 && flagtransparent){                getwindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);                getwindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);                flagtransparent = false;                Log.i(TAG, "onPanelSlIDe, offset " + slIDeOffset);  }

解决方法:

1)看一下我创建的以下Gist.

文件slIDe_up_activity.xml可能是活动布局,其中包括您向上滑动的面板视图.
您应该在此处设置androID:fitsSystemwindows =“ true”,以便正确插入任何子级,不要落在 *** 作栏或导航栏后面.

文件slIDe_vIEw.xml可能是您向上滑动的视图.

您无需在任何面板回调中执行任何其他 *** 作.

您可以安全地删除onPanelSlIDe()中的半透明样式和代码.这将导致滑动面板正确插入,从而永远不会落后于状态栏或导航栏.

另外,如果您没有相同的架构,则可以忘记slIDe_up_activity.xml,而在CoordinatorLayout中的androID:fitsSystemwindows =“ true”设置为slIDe_vIEw.xml.

2)我们正在谈论的第二件事是使状态栏变为半透明,让向上滑动的面板落在状态栏后面,然后平滑地添加填充以正确插入内容.
为此,设置androID:fitsSystemwindows =“ false”或将其从向上滑动面板具有的任何父对象中删除.
然后在onPanelSlIDe中,您可以执行以下 *** 作

    if (slIDeOffset >= ANCHOR_POINT) {        // adjust the span of the offset        float offset = (slIDeOffset - ANCHOR_POINT) / (1 - ANCHOR_POINT);        // the padding top will be the base original padding plus a percentage of the status        // bar height        float paddingtop = mSlIDePanelBasepadding + offset * mStatusbarInset;        // apply the padding to the header container        mContainer.setpadding(0, (int) paddingtop, 0, 0);    }

哪里:

> mSlIDePanelBasepadding将是您向上滑动面板的初始填充
> mStatusbarInset将是状态栏的高度.

当它超过锚点时,应该逐渐向您的slIDeUp面板添加填充.

您可以像这样获取状态栏的高度:

public int getStatusbarHeight() {    int result = 0;    int resourceID = getResources().getIDentifIEr("status_bar_height", "dimen", "androID");    if (resourceID > 0) {        result = getResources().getDimensionPixelSize(resourceID);    }    return result;}

我希望这个能有一点帮助.

总结

以上是内存溢出为你收集整理的android-Umano SlidingPanel中状态栏下方的滑动布局全部内容,希望文章能够帮你解决android-Umano SlidingPanel中状态栏下方的滑动布局所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1094231.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存