我正在使用这个布局
<android.support.design.card.MaterialCardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:innerRadius="0dp"
android:shape="ring"
android:thicknessRatio="0"
app:cardCornerRadius="24dp"
card_view:cardElevation="0dp"
card_view:cardMaxElevation="0dp">
<ImageView
android:id="@+id/close_button"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="top|end"
android:padding="@dimen/account_menu_close_button_padding"
android:alpha="0"
app:srcCompat="@drawable/quantum_gm_ic_close_vd_theme_24"
/>
</android.support.design.card.MaterialCardView>
Run Code Online (Sandbox Code Playgroud)
但我得到了一个带有小边框的cardView
如何删除此边框并使卡片视图透明?
我看到了类似的帖子,但没有给出答案
android border android-layout android-cardview materialcardview
使用 xml 的设计预览不显示 com.google.android.material.card.MaterialCardView,但在我们安装应用程序时显示。
我正在尝试为应用程序准备深色主题,其中一项要求是为卡片和对话框设置特定颜色:#ff3c454c
无论我是通过强制 ( app:cardBackgroundColor="#3c454c") 、引用 ( app:cardBackgroundColor="@color/...) 还是仅在主题中设置它- 在所有情况下我都没有得到我设置的颜色。相反,我得到了#525A61 的颜色。
我只测试了一种红色 (#f00) 只是为了确定它会影响卡,确实如此,对于这种颜色,它确实没问题。但是对于我设置的颜色,它没有。
在我写的时候,我尝试了多种方法来设置颜色。一开始我只想使用主题本身,所以我将其设置为:
样式文件
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
...
<item name="colorBackgroundFloating">@color/colorBackgroundFloating</item>
<item name="colorSurface">@color/colorBackgroundFloating</item>
</style>
Run Code Online (Sandbox Code Playgroud)
res/values-night/colors.xml
<color name="colorBackgroundFloating">#ff3c454c</color>
Run Code Online (Sandbox Code Playgroud)
后来我尝试直接使用颜色,甚至将其设置为硬编码。显示时仍然得到不正确的颜色。
看到这可能是库本身的错误,我在这里报告了这个(包括一个示例项目,如果你想查看它)。
我注意到 BottomNavigationView 和其他类似的情况可能会发生完全相同的问题。
为什么会发生?有什么解决方法吗?可以为所有使用这些属性的视图全局修复它的东西?
我的用例是编辑 shapeAppearanceModelcom.google.android.material.card.MaterialCardView
card.shapeAppearanceModel = card.shapeAppearanceModel
.toBuilder()
.setTopEdge(TriangleEdgeTreatment(triangleSize))
.build()
Run Code Online (Sandbox Code Playgroud)
上面的代码按预期工作,但是由于上面以编程方式设置了 shapeAppearanceModel
<com.google.android.material.card.MaterialCardView
android:id="@+id/card"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:cardBackgroundColor="?myCustomColor"
app:cardCornerRadius="8dp"
app:cardElevation=4dp"
app:cardPreventCornerOverlap="true"
app:cardUseCompatPadding="false">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@drawable/myImageDrawable"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</com.google.android.material.card.MaterialCardView>
Run Code Online (Sandbox Code Playgroud)
在 Android studio 中,由于 TopEdge 以编程方式定义,编辑器不会复制该错误,但在模拟器/真实设备中,子项不会被剪切,并且圆角会被 ImageView 重叠。
当我删除 shapeAppearanceModel 设置时,裁剪工作将按预期进行。
我正在尝试测试我的 recyclerView 并且我正在使用材料卡视图进行项目显示,虽然该应用程序运行良好,但当我尝试测试时出现此错误:
android.view.InflateException: Binary XML file line #11: Binary XML file line #11: Error inflating class com.google.android.material.card.MaterialCardView
Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class com.google.android.material.card.MaterialCardView
Caused by: java.lang.reflect.InvocationTargetException
...
Caused by: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.MaterialComponents (or a descendant).
Run Code Online (Sandbox Code Playgroud)
现在测试就这么简单:
@Test
fun shouldShowList() {
launchFragmentInContainer<PostsFragment>()
Thread.sleep(5000)
}
Run Code Online (Sandbox Code Playgroud)
睡眠仅用于应用程序等待尝试显示列表。奇怪的是,当我的列表项布局不使用 materialCardView 时,测试通过了。现在我已将我的应用主题更改为:
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
Run Code Online (Sandbox Code Playgroud)
但测试仍然消失,那么如何更改我的应用程序的测试主题?
如何禁用的触摸纹波效果MaterialCardView?将clickable属性设置为false或使用foreground和background属性无效。
我正在使用材料支持库版本1.1.0-alpha02。
java android android-layout material-design materialcardview