如何在cardview上设置彩色边框

时间:2016-04-12 13:39:39

标签: android material-design appcompat-v7-r23

我正在实施卡片视图,但我找不到任何边框选项来设置边框。

这是我的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>

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

enter image description here

帮帮我。我怎么能实现这个呢?我不知道。

谢谢。

6 个答案:

答案 0 :(得分:29)

创建drawable selector.xml

<cache:annotation-driven cache-manager="cacheManager"/>
<bean id="classManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"
    p:cache-manager-ref="classCache" />

<bean id="classCache"
    class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
    p:config-location="classpath:ehcache.xml" p:cacheManagerName="${service.name}.Class"
    p:acceptExisting="false" />


<bean id="cacheManager" class="org.springframework.cache.support.CompositeCacheManager">
    <property name="cacheManagers">
        <array>
            <ref bean="classManager" />
            <ref bean="eManager" /> 
        </array>
    </property>
    <property name="fallbackToNoOpCache" value="true" />
</bean>

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

答案 1 :(得分:20)

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>

您可以通过使用其附带的两个属性来进一步设置卡片视图的样式:

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

答案 2 :(得分:9)

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

<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>

将其用作布局的背景可绘制

答案 3 :(得分:3)

只需将MaterialCardView app:strokeColor app:strokeWidth 属性一起使用。

请注意,如果没有app:strokeColor,则无论app:strokeWidth的值如何(默认值为app:strokeColor=@null和{ {1}}。

类似:

app:strokeWidth=0dp

enter image description here

答案 4 :(得分:0)

我通过使cardBackgroundColor为绿色和contentPadding 1dp并在卡片内部有ConstraintLayout(或其他布局)和白色背景的情况下简化了此操作,像这样:

<android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        app:cardBackgroundColor="@color/colorAccent"
        app:contentPadding="1dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/white"
            android:padding="8dp">

    ...

这样,不需要额外的xml或其他多余的代码。

结果:

enter image description here

答案 5 :(得分:0)

尽管这个问题很老,但可能会帮助其他面临此问题的人。只需在build.gradle中添加新的MDC库

implementation 'com.google.android.material:material:1.2.0-alpha05' 

然后在布局中添加MaterialCardView

<com.google.android.material.card.MaterialCardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    style="@style/CardViewStyle"
    app:strokeColor="@color/your_color"
    app:strokeWidth="@dimen/_1sdp">

</com.google.android.material.card.MaterialCardView>

in style.xml

<style name="CardViewStyle" parent="Widget.MaterialComponents.CardView">
    <item name="cardBackgroundColor">@color/white</item>
    <item name="cardForegroundColor">@color/transparent</item>
    <item name="cardElevation">0dp</item>
    <item name="rippleColor">@color/colorRipple</item>
</style>