圆角不适用于 Material Design Bottomsheet Android [重复]
Posted
技术标签:
【中文标题】圆角不适用于 Material Design Bottomsheet Android [重复]【英文标题】:Rounded corners not working with Material Design Bottomsheet Android [duplicate] 【发布时间】:2020-08-10 17:48:15 【问题描述】:我正在使用 Material Design Library 1.1.0 并尝试在 Bottomsheet 上实现圆角。这是我的代码
风格-
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
<style name="DarkTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
<item name="shapeAppearanceLargeComponent">@style/ShapeAppearance.An.LargeComponent
</item>
<item name="android:windowActivityTransitions">true</item>
</style>
<style name="SplashAppTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light">
<item name="android:elevation">0dp</item>
</style>
<style name="ShapeAppearance.An.LargeComponent" parent="ShapeAppearance.MaterialComponents.LargeComponent">
<item name="cornerFamily">rounded</item>
<item name="cornerSize">4dp</item>
</style>
</resources>
类-
public class LoadingFrag extends BottomSheetDialogFragment
//Button
public LoadingFrag()
@Override
public void onCreate(@Nullable Bundle savedInstanceState)
super.onCreate(savedInstanceState);
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
return inflater.inflate(R.layout.bottom_sheet
, container, false);
活动 XML-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_
android:layout_
android:background="@color/cardBackgroundColor"
android:orientation="vertical">
<LinearLayout
android:layout_
android:layout_
android:layout_margin="10dp"
android:layout_gravity="center"
android:gravity="start"
android:orientation="horizontal">
<TextView
android:id="@+id/textView4"
android:layout_
android:layout_
android:layout_weight="0.7"
android:fontFamily="@font/product_sans_bold"
android:padding="20dp"
android:text="@string/one_second"
android:textAlignment="textStart"
android:textColor="@color/primaryTextColorDark"
android:textFontWeight="600"
android:textSize="30dp"
android:textStyle="bold" />
<ProgressBar
android:id="@+id/progressBar2"
style="?android:attr/progressBarStyle"
android:layout_
android:layout_
android:layout_gravity="center"
android:layout_weight="0.3"
android:indeterminate="true" />
</LinearLayout>
<TextView
android:id="@+id/prem_id"
android:layout_
android:layout_
android:layout_marginTop="-10dp"
android:layout_marginBottom="20dp"
android:fontFamily="@font/product_sans_regular"
android:paddingStart="30dp"
android:paddingRight="30dp"
android:text="@string/we_are_processing_things_for_you_and_creating_a_signal_to_nuke_mars_just_kidding_wait"
android:textColor="@color/primaryTextColor"
android:textSize="16dp"
app:lineHeight="25dp" />
</LinearLayout>
没有任何工作。我尝试手动创建一个形状并将其用作底片的形状,但这也不起作用。角落还是一样的。
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:如果您希望所有 4 个角都圆角,请在 BottomSheetDialogFragment
中,
覆盖此方法:
@Override
public void setupDialog(Dialog dialog, int style)
View view = inflate your view here
((View) view.getParent()).setBackgroundColor(ContextCompat.getColor(mContext, android.R.color.transparent));
并在您的 xml 中将 MaterialCardView
设置为具有期望半径的父布局并尝试一下
这里的想法是设置透明背景,这样卡片的半径就会显示出来。 有一些解决方案,但是这个技巧可以解决问题
【讨论】:
我只是想让上角不是全部四个。 这是真的!对话框或底部工作表的父布局不得有背景以显示角形状以上是关于圆角不适用于 Material Design Bottomsheet Android [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Android Material Design控件使用——CardView和SnackBar使用
android material design 风格组件(MaterialButton,MaterialButtonToggleGroup,Chip,ChipGroup)大汇总.
Android技术分享|自定义View实现Material Design的Loading效果