【问题标题】:Android CardView transparent backgroundAndroid CardView 透明背景
【发布时间】:2018-12-20 03:45:32
【问题描述】:

我想创建一个卡片视图,其中卡片具有简单的一张照片和右上底部以删除它们。所以为了让底部完全可见,我需要让卡片比照片大,但我不想展示它。所以我尝试将背景设置为透明,并且在设计时一切都很好

这是设计时android studio的截图:
A) 显示卡片的外观
B)当我点击它时是同一张卡片,显示卡片比照片本身大一点(蓝色边框是您选择元素时的正常android studio边框)

但在运行时,卡片会出现一些奇怪的高度:

代码如下:

influencer_card.xml

   <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/cardView"
        android:layout_width="160dp"
        android:layout_height="160dp"
        android:layout_gravity="center"
        android:layout_marginBottom="@dimen/smallMargin"
        android:elevation="0dp"
        card_view:cardBackgroundColor="@android:color/transparent"
        card_view:cardCornerRadius="0dp">


        <ImageView
            android:layout_width="@dimen/influencerCardSize"
            android:layout_height="@dimen/influencerCardSize"
            android:layout_gravity="bottom"
            android:scaleType="centerCrop"
             />

        <TextView
            android:layout_width="@dimen/influencerCardSize"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:alpha="0.7"

            android:background="@color/colorPrimaryDark"
            android:gravity="center"
         />

        <ImageButton

            android:layout_width="@dimen/removeButtonSize"
            android:layout_height="@dimen/removeButtonSize"
            android:layout_gravity="right|top"
            android:background="?android:attr/selectableItemBackground"
            android:src="@drawable/ic_remove" />

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

new_influencers.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">



    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="@dimen/influencersViewHeight"
        android:layout_gravity="center"

        android:layout_margin="@dimen/smallMargin"
        android:background="@android:color/transparent"
        android:elevation="0dp"
        android:scrollbars="vertical"
        android:visibility="visible" />




</LinearLayout>

我没有在 java 代码上更改任何与样式相关的东西...

我怎样才能消除这个恼人的海拔

【问题讨论】:

  • 尝试card_view:cardElevation="0dp" 而不是android:cardElevation="0dp"
  • 试试这个app:cardBackgroundColor="@android:color/transparent"

标签: android android-recyclerview android-cardview android-elevation


【解决方案1】:

想让卡片不可见,让“alpha”属性1

【讨论】:

    【解决方案2】:

    如果你想删除CardView中的海拔,

    使用app:cardElevation = "0dp" 而不是android:cardElevation="0dp"

    【讨论】:

      【解决方案3】:

      使用card_view:cardElevation="0dp" 代替android:elevation="0dp"。希望对你有帮助

       <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
              android:id="@+id/cardView"
              android:layout_width="160dp"
              android:layout_height="160dp"
              android:layout_below="@+id/linearLayout"
              android:layout_centerHorizontal="true"
              card_view:cardElevation="0dp"
              card_view:cardBackgroundColor="@android:color/transparent">
      
              <ImageView
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:layout_gravity="bottom"
                  android:layout_marginEnd="10dp"
                  android:layout_marginTop="10dp"
                  android:src="@drawable/img"
                  android:scaleType="centerCrop"
                  android:layout_marginRight="10dp" />
      
              <TextView
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:layout_gravity="bottom"
                  android:alpha="0.7"
                  android:text="text"
                  android:layout_marginEnd="10dp"
                  android:background="@color/colorPrimaryDark"
                  android:gravity="center"
                  android:layout_marginRight="10dp" />
      
              <ImageView
                  android:layout_width="20dp"
                  android:layout_height="20dp"
                  android:layout_gravity="right|top"
                  android:background="?android:attr/selectableItemBackground"
                  android:src="@drawable/img" />
      
          </android.support.v7.widget.CardView>
      

      【讨论】:

      • 你可以用ImageView代替ImageButton
      【解决方案4】:

      如果您不想要海拔,您应该考虑不使用 CardView,因为 CardView 默认会带来海拔。

      相反,将 CardView 替换为 ConstraintLayout 或 RelativeLayout 之类的容器。这些选项默认不带任何高度,是透明的,如果您愿意,您仍然可以向它们添加前景波纹效果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-15
        • 2020-07-21
        • 2018-11-23
        • 2016-12-02
        • 2011-08-08
        • 2015-06-18
        • 1970-01-01
        相关资源
        最近更新 更多