gpt4 book ai didi

android - AppBarLayout 透明度

转载 作者:数据小太阳 更新时间:2023-10-29 02:56:25 34 4
gpt4 key购买 nike

我一直在尝试使用 AppBarLayout,但找不到使它的背景透明的方法。

我的意思是:

enter image description here

这是我的 XML:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MainActivity">


<android.support.v7.widget.RecyclerView
android:id="@+id/recycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />

<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:elevation="0dp"
android:background="@android:color/transparent">

<TextView
android:id="@+id/toolbar"
app:elevation="0dp"
android:text="hey"
android:textColor="@android:color/white"
android:layout_width="match_parent"
android:layout_height="45dp"
android:background="#8000CDFE"
app:layout_scrollFlags="scroll|enterAlways"/>

</android.support.design.widget.AppBarLayout>

</android.support.design.widget.CoordinatorLayout>

如您所见,我使用的是颜色 #8000CDFE,它应该给我 50% 的透明度,但由于某些原因它没有。我已经尝试为 AppBarLayout 设置透明背景,但它也没有多大帮助。

有人遇到过这个问题吗?无论如何要为 AppBarLayout 及其 sibling 分配透明颜色?

谢谢。

最佳答案

为什么会这样:

根据docsCoordinateLayout 是一种特殊的 FrameaLayout,因此可以假设叠加层行为与常规 FrameLayout 一样工作,对吗?但问题是,当它检测到您的 RecyclerView 具有app:layout_behavior="@string/appbar_scrolling_view_behavior标志时,它会做不同的事情。

当它检测到滚动行为时,我假设它执行以下操作(没有查看代码,只是假设): 它将 RecyclerView 放置在 AppBarLayout 的正下方,但保留其完整高度。发生滚动时,它所做的只是将 RecyclerView 的 translationY 设置为负数,以将其向上移动滚动值。

可能的解决方案:

  1. RecyclerView 的翻译设置为 -appBarHeight。这将使它出现在 appBar 下方。
  2. RecyclerView 的高度增加 appBarHeight。这是为了抵消由 scrollBehavior 引起的 translationY 变化。

例如,您可以这样做:

ViewTreeObserver vto = mRecyclerView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {

if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
mRecyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
mRecyclerView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}

recyclerView.setTranslationY(-appBarHeight);
recyclerView.getLayoutParams().height = recyclerView.getHeight()+appBarHeight;
}
});

关于android - AppBarLayout 透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33101077/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com