【问题标题】:Cardview shadow for ImageViewImageView 的 Cardview 阴影
【发布时间】:2018-08-11 02:02:47
【问题描述】:

(1 个屏幕截图 - ImageView 可见性可见,2 个屏幕截图 - 消失了)

当使用ImageView 和CardView 时,我们可以说阴影根本不可见(尤其是在智能手机显示屏上)

<android.support.v7.widget.CardView
    android:id="@+id/ImageViewWrapper"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:elevation="0dp"
    android:layout_margin="10dp"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:cardCornerRadius="6dp">

    <android.support.v7.widget.AppCompatImageView
        android:id="@+id/ImageView"
        android:visibility="visible"
        android:background="@color/black_1000"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center_vertical"
        app:srcCompat="@drawable/ic_folder"/>

</android.support.v7.widget.CardView>

android:elevation 没有任何效果(0dp、5dp 或 20dp - 没有任何变化),所以我将其设置为 0dp

我们可以控制这个cardview阴影,让它更强/更大/更厚吗?

3 截图 - 这里是视频缩略图 ImageView (https://play.google.com/store/apps/details?id=com.mxtech.videoplayer.ad) 的 MX Player 应用示例

更新

我设置app:cardElevation="7dp" 和app:cardUseCompatPadding="true" 没有进展……cardUseCompatPadding 让我的图像高度变小了,现在我的左/右有黑条

【问题讨论】:

  • @duggu 我有影子,这是不同的问题
  • 你为什么用android.support.v7.widget.AppCompatImageView而不是ImagefView??有什么原因吗?
  • @Xenolion ImageView 通常总是AppCompatImageView,但在某些情况下,我们必须显式设置AppCompatImageView,例如,如果为 RecyclerView 使用自定义列表项 xml 并像View view = LayoutInflater.from(mContext).inflate(R.layout.list_item, parent, false); 一样膨胀
  • @Xenolion 当您在布局中使用 ImageView 时,将自动使用 AppCompatImageView,并且顶级活动/对话框由 appcompat 提供。您应该只需要在编写自定义视图时手动使用此类。 developer.android.com/reference/android/support/v7/widget/…

标签: android android-imageview android-cardview


【解决方案1】:

使用app:cardElevation="4dp"而不是android:elevation。

同时添加这个app:cardUseCompatPadding="true"。

更新

还可以考虑将 CardView 大小更改为:

android:layout_width="wrap_content"
android:layout_height="wrap_content"

【讨论】:

  • 使用app:cardElevation="7dp" app:cardUseCompatPadding="true" 更新问题,没有进展,cardUseCompatPadding 破坏图像大小
  • 我已经更新了答案!也使用ImageView 而不是AppCompatImageView。并将adjustLayoutBounds设置为它。
  • ImageView == AppCompatImageView
  • 我使用布局约束并为我的视图设置了特定大小,我不能使用 wrap_content...
  • 更改app:cardElevation 的值实际上会使阴影变大,但它是如此微弱/透明,我们并没有真正看到它很好。据我所知,我们无法控制 CardView 的阴影的透明和颜色
【解决方案2】:

确保启用硬件加速

您可以在应用程序级别执行此操作:

<application android:hardwareAccelerated="true" ...>

或活动水平:

<application android:hardwareAccelerated="false">
    <activity ... />
    <activity android:hardwareAccelerated="true" />
</application>

或窗口级别、视图级别等

【讨论】:

  • 我相信它是默认启用的,无论如何我尝试添加&lt;application android:hardwareAccelerated="true" ...&gt;但它没有改变任何东西,我猜如果它被禁用那么阴影将根本不可见
  • @user924 你的最低目标安卓版本是多少?
  • Android 4.1(API 级别 16)
猜你喜欢
  • 2018-12-02
  • 1970-01-01
  • 1970-01-01
  • 2017-09-10
  • 2017-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
相关资源
最近更新 更多