Articles of android elevation

Android Lollipop上的提升+透明度错误

使用背景颜色为具有某些alpha的视图(例如#99fe0038)和API 21上的某些高程显示两个圆圈:一个用于视图本身,另一个用于内部: 通过代码设置高程和背景颜色: view.setElevation(getResources().getDimensionPixelSize(R.dimen.fab_elevation_lollipop)); view.setBackgroundColor(Color.parseColor(“#99fe0038”)); 没有设置高程或使用不透明的颜色,一切看起来都像预期的那样。 这是Android漏洞还是我错过了什么?

前棒棒糖设备的工具栏上未显示高程

我想在Lickipop设备上看到的KitKat设备上对我的toobar显示相同的高程效果。 以下是KitKat和Lollipop设备的屏幕截图。 我已经提到了这个链接,但我的问题还没有解决。 棒棒糖装置: Kitkat设备: ContentMain.xml app_bar_main.xml

高架RecyclerView项目逐渐变形(高程变化)

任何想法为什么RecyclerView项目变形,每个连续项目变得更糟? 更新:我正在使用CardViews,现在没有视图“变形”,但阴影/海拔高度发生变化。 根据项目垂直位于屏幕上的位置,高程看起来更高,阴影随着项目向下滚动而增长。 请在此处观看video: https : //youtu.be/nROYq8rpUMs 。 我已经建立了一个新项目,只留下展示问题所需的代码: MainActivity.java package tzig.schm00.masterdetail; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import tzig.schm00.masterdetail.dummy.DummyContent; import java.util.List; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); View recyclerView = findViewById(R.id.item_list); setupRecyclerView((RecyclerView) recyclerView); } private void […]

在生成视图的位图时,未显示Android高程/阴影

我正在生成视图的位图,以将其显示为地图上的标记。 它工作正常,但我面临的问题是视图的高度没有显示。 private Bitmap getMarkerBitmapFromView(View view) { view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); //view.buildDrawingCache(); view.setLayerType(View.LAYER_TYPE_SOFTWARE, null); Bitmap returnedBitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(returnedBitmap); /*canvas.drawColor(Color.WHITE, PorterDuff.Mode.SRC_IN); Drawable drawable = view.getBackground(); if (drawable != null) drawable.draw(canvas); */ view.draw(canvas); return returnedBitmap; }

如何在Android API中模拟低于21的按钮高程(阴影)?

我只有一个按钮就有这个最小的Android Studio项目。 我为按钮指定了一个阴影: android:elevation=”3dp” android:translationZ=”3dp” android:stateListAnimator=”@null” 我在Android Studio Design标签中看到了阴影。 但我也在xml编辑器中收到警告 属性…仅用于API级别21及更高级别(当前最小值为16) 实际上,按钮阴影仅显示在API level 21 or higher模拟器中,并且显示为平面,在API level lower than 21模拟器中完全没有阴影。 所以具体问题是,如何在API’s lower than 21模拟阴影效果。 activity_main.xml中 MainActivity.java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } 在API 22显示阴影的按钮: 在API 16 ,相同的按钮没有显示阴影:

Android“提升”未在CustomView下显示阴影

我有一个CustomView工作在前Lollipop,现在我尝试在Lollipop设备上应用android:elevation和android:translateZ但似乎不起作用。 我错过了什么?

为AppBarLayout设置提升/ StateListAnimator时,Android JNI崩溃

我正在尝试将AppBarLayout的高程设置为0(并返回到默认值)。 它崩溃了一些时间 (并不总是), 只在API 21(> = 22等工作正常)崩溃。 我正在使用StateListAnimator ,如下面的链接所述(因为它是自support-lib 24.0.0以来设置高程的“官方”方式): https://stackoverflow.com/a/37992366/2170109 我的实际方法如下所示: public void setAppBarElevation(final boolean visible) { if (appBar != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { appBar.setStateListAnimator(AnimatorInflater.loadStateListAnimator(this, (visible) ? R.animator.appbar_elevated : R.animator.appbar_not_elevated)); } } 连同两个XML文件(另一个是设置android:valueTo=”0″ ): 我已经测试了一些具有不同Android版本的设备(API 19,21,23,24,25),它只在21上崩溃。 日志显示设置高程时出现了一些JNI错误(我认为它来自StateListAnimator ): ——— beginning of system JNI DETECTED ERROR IN APPLICATION: cant call void android.view.View.setElevation(float) on […]

非按钮视图的Android涟漪效应+提升

我正在尝试将触摸反馈添加到LinearLayout,这类似于API级别21中的常规Button反馈,就像在此示例中一样,并且到目前为止还没有成功。 我已经定义了一个像这样的标准波纹可绘制: 并使用了Google 在此提供的StateListAnimator: 在定义animation师和波纹可绘制之后,我将它们添加到我的LinearLayout中,如下所示: 我的想法是使用这个LinearLayout作为一个按钮,因为我更容易插入各种types的文本并在其中处理ImageView定位(而不是按钮drawables)。 只要视图的背景根据此问题没有透明度,就可以单独添加涟漪效果或animation。 我不确定这是否是与上述问题相关的问题,但看到标准按钮设法同时采用波纹和高程animation反馈,我认为在其他视图中也可以实现这种效果。 任何洞察这个问题将不胜感激。

Android 5.0(Lollipop)上的Elevation无法正常工作

我试图重现Google在这里提出的高程示例: https://developer.android.com/training/material/shadows-clipping.html 但对我来说,没有阴影出现。 不在Android Studio设计器中,不在AVD模拟器上。 我正在使用所有最新版本的Android Studio,SDK和模拟器图像。 我错过了什么?

android:elevation在L预览中不起作用

我已经玩了L预览了几天,而且似乎没有用的一件事是视图的android:elevation属性。 它在调用View.setElevation()时工作正常,但它似乎忽略了XML属性。 我正在使用Android Studio 0.8.2并将minSdkVersion和targetSdkVersion设置为’L’ ,并将compileSdkVersion设置为’android-L’ 。 buildToolsVersion是”20.0.0″ 。 以下是无法正常工作的示例布局: 以下是结果的屏幕截图:imgur.com/mqeq9vK 根据我设置的android:elevation ,底部卡应该在“地面”上平坦,但事实并非如此。 事实上,它看起来没有什么不同,顶级卡的高度是5dp 。 这是一个已知问题,它对你有用吗? 编辑:似乎这只是CardView的情况,或者至少它不是Buttons的问题。 在这个布局中,我用Button取代了CardView ,即使阴影有点搞砸(已知错误),你仍然可以看到高度上的差异。 编辑2:已经证实这个问题只影响CardView , android:elevation适用于任何其他视图。 有关发生这种情况的详细解释,请查看已接受的答案。 与此同时,我的解决方法是用FrameLayout替换CardView并将android:background设置为drawable。 以下是可用的卡背景可绘制的示例: 我也将此作为一个错误提交,所以如果它影响你,请为此问题加注。 https://code.google.com/p/android-developer-preview/issues/detail?id=731