如何实现SlidingPaneLayout右侧部分透明?布局透明设置问题求助
解决SlidingPaneLayout右侧透明不生效的问题
我懂你想要实现类似系统计算器那种右侧面板透明的效果,这种背景设置不生效的情况在SlidingPaneLayout里挺常见的,咱们一步步来搞定它:
1. 先给SlidingPaneLayout本身设置透明
很多人容易忽略,SlidingPaneLayout自身默认带有背景色(通常是白色),只给右侧子布局设透明根本没用,得先把容器本身的背景改成透明:
<androidx.slidingpanelayout.widget.SlidingPaneLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/transparent"> <!-- 你的左侧面板布局 --> <.../> <!-- 右侧面板(right_side) --> <android.support.constraint.ConstraintLayout android:id="@+id/right_side" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/transparent" app:layout_slideable="true"> <!-- 你那个id为transparent的ConstraintLayout --> <android.support.constraint.ConstraintLayout android:id="@+id/transparent" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/transparent"> <!-- 内部的控件们 --> </android.support.constraint.ConstraintLayout> </android.support.constraint.ConstraintLayout> </SlidingPaneLayout>
2. 处理Activity主题的默认窗口背景
如果上面的操作还是没效果,大概率是你的Activity主题自带了不透明的窗口背景,把右侧面板的透明效果盖住了。可以在你的Activity主题里加这两行:
<style name="YourCalculatorTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> <item name="android:windowBackground">@android:color/transparent</item> <!-- 要是不需要半透明窗口的特性,这行可以去掉 --> <item name="android:windowIsTranslucent">true</item> </style>
注意:开启windowIsTranslucent可能会影响Activity的过渡动画,要是不需要这个特性,只设置windowBackground为透明就够了。
3. 升级到AndroidX版本的SlidingPaneLayout
如果你还在使用旧版的android.support.slidingpanelayout.widget.SlidingPaneLayout,强烈建议换成AndroidX的androidx.slidingpanelayout.widget.SlidingPaneLayout——旧版本存在不少背景处理的bug,升级后能解决很多兼容性问题。
4. 排查内部子控件的不透明设置
有时候看起来面板不透明,其实是内部某个子控件(比如带背景的TextView、ImageView)搞的鬼,仔细检查transparent这个布局里的所有控件,确保它们的背景也都是透明或者你想要的半透明状态。
按这几步操作下来,应该就能完美实现类似系统计算器的右侧透明滑动面板效果了!
内容的提问来源于stack exchange,提问作者Vlad
相关产品推荐
相关产品推荐

