Android 在MaterialCardView的中心设置自定义图标
我无法在MaterialCardView的中心设置自定义图标。这是我的xml布局Android 在MaterialCardView的中心设置自定义图标,android,material-design,android-cardview,material-components,material-components-android,Android,Material Design,Android Cardview,Material Components,Material Components Android,我无法在MaterialCardView的中心设置自定义图标。这是我的xml布局 <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/cardPaymentContainer" android:layout_width="0dp" android:layout_height="200dp" android:layout_margin="@dimen/default_margi
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cardPaymentContainer"
android:layout_width="0dp"
android:layout_height="200dp"
android:layout_margin="@dimen/default_margin"
android:layout_marginStart="@dimen/button_margin"
android:layout_marginEnd="@dimen/button_margin"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/toolBarContainer">
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardPaymentCardView"
android:layout_width="0dp"
android:layout_height="0dp"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:cardCornerRadius="@dimen/card_view_cornder_radius"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
</com.google.android.material.card.MaterialCardView>
</androidx.constraintlayout.widget.ConstraintLayout>
点击:
但是我需要把我的自定义图标放在CardView的中心。
Smt是这样的:
我将SVG转换为xml(由Android Studio提供)
我尝试了此操作,但图标不显示和不显示在cardView的中心:
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardPaymentCardView"
style="@style/cardViewStyle"
android:layout_width="0dp"
android:layout_height="0dp"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:cardCornerRadius="@dimen/card_view_cornder_radius"
app:checkedIcon="@drawable/ic_credit_card_outline_select"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
</com.google.android.material.card.MaterialCardView>
尝试使用与此类似的
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_checked_gray_24dp" android:state_selected="true"/>
<item android:drawable="@drawable/ic_checked_gray_24dp" android:state_pressed="true"/>
<item android:drawable="@drawable/ic_checked_gray_24dp" android:state_checked="true"/>
<item android:drawable="@drawable/ic_checked_white_32dp"/>
</selector>
简而言之,使用组件提供的标准checkedIcon
是无法实现的。您必须在卡
内添加可绘图/视图
使用版本1.1.0
,1.2.1
,您可以:
- 使用app:checkedIcon属性定义自定义图标
- 使用
app:checkedEntint
属性为图标定义颜色选择器
使用1.3.0-alpha03
还可以定义:
app:checkedEdiconSize
:图标的大小(默认值24dp
)
app:checkedEdiconMargin
:图标的边距(默认值8dp
)
要在1.2.x和1.1.0版本中实现相同的行为,您可以执行以下操作((但我建议您避免这种解决方法):
- 覆盖添加到
dimens.xml
中的选中图标使用的边距:
<!-- Margin between the checked icon and the card -->
<dimen name="mtrl_card_checked_icon_margin">xxdp</dimen>
<!-- Size of the icon to be placed when the card is checked -->
<dimen name="mtrl_card_checked_icon_size">xxdp</dimen>
试试app:checkendeconmargin
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardPaymentCardView"
style="@style/cardViewStyle"
android:layout_width="0dp"
android:layout_height="0dp"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:cardCornerRadius="@dimen/card_view_cornder_radius"
app:checkedIcon="@drawable/ic_credit_card_outline_select"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:checkedIconMargin="10dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
</com.google.android.material.card.MaterialCardView>
这是我的解决方案。这是定制MaterialCardView的正确方法吗?非常感谢,@Gabriele。我在这个问题上花了几个小时,你的回答帮助了我。我甚至在Github上写了一份错误报告。谢谢@Gabriele。自定义大小是我想要的。这应该出现在按钮的公共API上。不幸的是,这是一个漏洞我们最好有自动取款机。
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardPaymentCardView"
style="@style/cardViewStyle"
android:layout_width="0dp"
android:layout_height="0dp"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:cardCornerRadius="@dimen/card_view_cornder_radius"
app:checkedIcon="@drawable/ic_credit_card_outline_select"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:checkedIconMargin="10dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
</com.google.android.material.card.MaterialCardView>