无法从未提升的透明 FloatingActionButton 中删除 "shadow"
Can't remove "shadow" from unelevated transparent FloatingActionButton
在花了几个小时研究这个问题之后,我决定问而不是在这样一个(看似)简单的任务上浪费更多时间。
我正在尝试实现一个具有透明背景且没有边框的 FloatingActionButton,以仅显示一个自定义图标。我知道 material 设计不鼓励这样做,但我需要这样做。
我面临的问题是有阴影显示,这是我不想要的。
由于我将海拔设置为 0dp,所以我不知道它是如何到达那里的,因此我也不知道如何删除它。
这是包含 FAB 的片段的代码:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/fragment_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_sample"
android:elevation="0dp"
android:fitsSystemWindows="true">
<android.support.v7.widget.RecyclerView
android:id="@+id/fragment_grid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:gravity="center"
android:padding="10dp"
android:stretchMode="columnWidth"
android:verticalSpacing="25dp"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
style="@style/AppTheme"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center"
android:layout_marginBottom="@dimen/activity_vertical_margin"
android:adjustViewBounds="true"
android:elevation="0dp"
android:fitsSystemWindows="true"
android:scaleType="fitCenter"
app:borderWidth="0dp"
app:fabSize="normal"
app:layout_anchorGravity="bottom|center"
app:layout_behavior="ScrollAwareFABBehavior"
/>
</android.support.design.widget.CoordinatorLayout>
这是我的 AppTheme:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:fitsSystemWindows">true</item>
<item name="android:spotShadowAlpha">0</item>
<item name="android:shadowRadius">0</item>
<item name="android:ambientShadowAlpha">0</item>
<item name="selectableItemBackgroundBorderless">@null</item>
</style>
我设置透明度的Fragment的onCreateView:
@Override
public final View onCreateView(final LayoutInflater inflater, final ViewGroup container,
final Bundle savedInstanceState) {
// initialize variables
View view = inflater.inflate(R.layout.fragment_desk, container, false);
coordinatorLayout = (CoordinatorLayout) view.findViewById(R.id.fragment_layout);
fab = (FloatingActionButton) coordinatorLayout.findViewById(R.id.fab);
fab.getBackground().setColorFilter(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
return view;
}
TL;DR: 如何去除第二张图片中的阴影?
编辑:
看来,这个问题与晶圆厂规模有关。
我将 design_fab_size_normal 设置为 200 只是为了看看它的作用。事实证明它不会影响我的图标大小,但会影响阴影的大小。
这里是 dimens.xml:
<resources xmlns:tools="http://schemas.android.com/tools">
<dimen name="design_fab_image_size" tools:override="true">64dp</dimen>
<dimen name="design_fab_size_normal" tools:override="true">200dp</dimen>
</resources>
尝试完全删除 android:elevation="0dp"
。
应该是:
app:elevation="0dp"
而不是:
android:elevation="0dp"
您也可以通过 java 代码使用:
float zeroElevation=0.0f;
View.setElevation(zeroElevation);
在花了几个小时研究这个问题之后,我决定问而不是在这样一个(看似)简单的任务上浪费更多时间。
我正在尝试实现一个具有透明背景且没有边框的 FloatingActionButton,以仅显示一个自定义图标。我知道 material 设计不鼓励这样做,但我需要这样做。
我面临的问题是有阴影显示,这是我不想要的。 由于我将海拔设置为 0dp,所以我不知道它是如何到达那里的,因此我也不知道如何删除它。
这是包含 FAB 的片段的代码:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/fragment_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_sample"
android:elevation="0dp"
android:fitsSystemWindows="true">
<android.support.v7.widget.RecyclerView
android:id="@+id/fragment_grid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:gravity="center"
android:padding="10dp"
android:stretchMode="columnWidth"
android:verticalSpacing="25dp"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
style="@style/AppTheme"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center"
android:layout_marginBottom="@dimen/activity_vertical_margin"
android:adjustViewBounds="true"
android:elevation="0dp"
android:fitsSystemWindows="true"
android:scaleType="fitCenter"
app:borderWidth="0dp"
app:fabSize="normal"
app:layout_anchorGravity="bottom|center"
app:layout_behavior="ScrollAwareFABBehavior"
/>
</android.support.design.widget.CoordinatorLayout>
这是我的 AppTheme:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:fitsSystemWindows">true</item>
<item name="android:spotShadowAlpha">0</item>
<item name="android:shadowRadius">0</item>
<item name="android:ambientShadowAlpha">0</item>
<item name="selectableItemBackgroundBorderless">@null</item>
</style>
我设置透明度的Fragment的onCreateView:
@Override
public final View onCreateView(final LayoutInflater inflater, final ViewGroup container,
final Bundle savedInstanceState) {
// initialize variables
View view = inflater.inflate(R.layout.fragment_desk, container, false);
coordinatorLayout = (CoordinatorLayout) view.findViewById(R.id.fragment_layout);
fab = (FloatingActionButton) coordinatorLayout.findViewById(R.id.fab);
fab.getBackground().setColorFilter(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
return view;
}
TL;DR: 如何去除第二张图片中的阴影?
编辑: 看来,这个问题与晶圆厂规模有关。 我将 design_fab_size_normal 设置为 200 只是为了看看它的作用。事实证明它不会影响我的图标大小,但会影响阴影的大小。
这里是 dimens.xml:
<resources xmlns:tools="http://schemas.android.com/tools">
<dimen name="design_fab_image_size" tools:override="true">64dp</dimen>
<dimen name="design_fab_size_normal" tools:override="true">200dp</dimen>
</resources>
尝试完全删除 android:elevation="0dp"
。
应该是:
app:elevation="0dp"
而不是:
android:elevation="0dp"
您也可以通过 java 代码使用:
float zeroElevation=0.0f;
View.setElevation(zeroElevation);