问题描述
嘿,我在应用cornerradiis后在cardview中使用constraintlayout我想删除额外的背景,我试图将cardview和constraintlayout背景设置为透明,但没有任何改变。布局是一个bottomsheetfragment。 Picture of the app
片段布局
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="50dp"
app:cardElevation="20dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context="com.example.virtualmusem.views.LoginFragment">
<ImageView
android:id="@+id/app_icon"
android:layout_width="40dp"
android:layout_height="60dp"
android:layout_marginRight="14dp"
android:src="@drawable/museumicon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintRight_toRightOf="@+id/email"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/singin_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="14dp"
android:text="@string/please_sing_in"
android:textColor="@android:color/black"
android:textSize="25sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="14dp"
android:background="@drawable/edit_text_login_background"
android:drawableEnd="@drawable/ic_baseline_alternate_email_24"
android:hint="@string/email"
android:padding="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/singin_text" />
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="14dp"
android:layout_marginTop="35dp"
android:background="@drawable/edit_text_login_background"
android:drawableEnd="@drawable/ic_baseline_lock_24"
android:hint="@string/password"
android:inputType="textPassword"
android:padding="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/email" />
<Button
android:id="@+id/admin_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="60dp"
android:layout_marginRight="15dp"
android:layout_marginBottom="300dp"
android:background="@drawable/custom_button"
android:padding="8dp"
android:text="@string/login"
android:textAllCaps="false"
android:textSize="15sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/password" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</layout>
解决方法
角半径在 cardview 上而不是 BottomSheet 上,因此也尝试将角半径添加到工作表中。
对于 MaterialComponents,您可以按如下方式进行,否则只需简单搜索即可。
<style name="ThemeOverlay.BottomSheetDialog" parent="ThemeOverlay.MaterialComponents.Dialog">
....
<item name="shapeAppearanceLargeComponent">@style/AppShapeAppearance.LargeComponent</item>
</style>
在LargeComponent 样式中设置cornerRadius
<style name="AppShapeAppearance.LargeComponent" parent="ShapeAppearance.MaterialComponents.LargeComponent">
<item name="cornerFamily">rounded</item>
<item name="cornerSize">16dp</item>
</style>
然后将叠加层添加到您的主题中
<item name="bottomSheetDialogTheme">@style/ThemeOverlay.BottomSheetDialog</item>
还有其他方法可以做到,除了底线,也可以将半径添加到底部表格或将底部表格的背景设置为透明。