如何在cardview上设置彩色边框

Sag*_*ada 17 android android-appcompat material-design

我正在实现卡片视图,但我找不到任何边框选项来设置它的边框.

这是我的card.xml:

<android.support.v7.widget.CardView android:layout_marginTop="10dp"
  android:id="@+id/cardView"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  xmlns:android="http://schemas.android.com/apk/res/android"
  card_view:cardPreventCornerOverlap="false"
  app:cardPreventCornerOverlap="false"
  xmlns:card_view="http://schemas.android.com/tools"
  xmlns:app="http://schemas.android.com/apk/res-auto">

  <RelativeLayout
     android:background="@drawable/tab_bg"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:padding="16dp">

     <TextView
         android:id="@+id/title"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="Title"
         android:textSize="20sp" />

  </RelativeLayout>

</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)

这是我的图像,我想在卡片视图上实现绿色边框?

在此输入图像描述

帮我.我怎么能实现这个呢?我没有线索.

谢谢.

Jha*_*Das 31

创建drawable selector.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#808080"/>
    <stroke android:width="3dp" android:color="#B1BCBE" />
    <corners android:radius="20dp"/>
    <padding android:left="0dp" android:top="0dp"
             android:right="0dp" android:bottom="0dp" />
</shape>      
Run Code Online (Sandbox Code Playgroud)

然后将此设置为背景,根据您的选择更改颜色

  • 我这样做了,但它不适用于卡片视图,并且背景仍然是白色。知道为什么会这样吗? (3认同)

Lev*_*yan 30

android v28支持库包含一个名为Material Card View的组件,它为我们提供了开箱即用的材质风格的cardview实现.

<android.support.design.card.MaterialCardView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_margin="10dp">
    ... child views ...
</android.support.design.card.MaterialCardView>
Run Code Online (Sandbox Code Playgroud)

您可以使用随附的两个属性进一步设置cardview的样式:

  • app:strokeColor - 用于给定笔划的颜色,必须设置此颜色才能显示笔划
  • app:strokeWidth - 要应用于视图笔划的宽度

  • 这个回应应该被接受。/sf/users/412708131/ (2认同)

Gab*_*tti 20

随着材料构件库只是使用MaterialCardViewapp:strokeColorapp:strokeWidth属性。

请注意,如果没有app:strokeColor,卡片将不会呈现描边边框,无论app:strokeWidth值如何(默认值为app:strokeColor=@nullapp:strokeWidth=0dp)。

就像是:

<com.google.android.material.card.MaterialCardView
    ...
    app:strokeWidth="1dp"
    app:strokeColor="@color/stroke_color"
    app:cardElevation="xxdp">

    ...

</com.google.android.material.card.MaterialCardView>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


使用Jetpack Compose, 1.0.x您可以borderCard可组合中使用该属性:

Card( border= BorderStroke(1.dp, Red)){
    //.....
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


Chi*_*giz 10

这是您的问题的解决方案:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
   <solid android:color="#ffffff" />
   <stroke android:width="1dip" android:color="#00ff00"/>
   <corners android:radius="20dip"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

使用它作为您的布局的背景drawable