标签: material-components-android

Material Design没有样式化警报对话框

我已将appCompat材质设计添加到我的应用程序中,似乎警报对话框未使用我的primary,primaryDark或强调颜色.

这是我的基本风格:

<style name="MaterialNavyTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/apptheme_color</item>
    <item name="colorPrimaryDark">@color/apptheme_color_dark</item>
    <item name="colorAccent">@color/apptheme_color</item>
    <item name="android:textColorPrimary">@color/action_bar_gray</item>
</style>
Run Code Online (Sandbox Code Playgroud)

根据我的理解,对话框按钮文本也应该使用这些颜色.我的理解是错的还是我还需要做些什么?


解:

明确的答案让我走上正轨.

<style name="MaterialNavyTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/apptheme_color</item>
    <item name="colorPrimaryDark">@color/apptheme_color_dark</item>
    <item name="colorAccent">@color/apptheme_color</item>
    <item name="android:actionModeBackground">@color/apptheme_color_dark</item>
    <item name="android:textColorPrimary">@color/action_bar_gray</item>
    <item name="sdlDialogStyle">@style/DialogStyleLight</item>
    <item name="android:seekBarStyle">@style/SeekBarNavyTheme</item>
</style>

<style name="StyledDialog" parent="Theme.AppCompat.Light.Dialog">
    <item name="colorPrimary">@color/apptheme_color</item>
    <item name="colorPrimaryDark">@color/apptheme_color_dark</item>
    <item name="colorAccent">@color/apptheme_color</item>
</style>
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-support-library material-design material-components-android

160
推荐指数
3
解决办法
10万
查看次数

Material-1.5.0-alpha03\res\values-v31\values-v31.xml:3:5-94: AAPT: 错误: 资源 android:color/system_neutral1_1000 未找到

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="m3_ref_palette_dynamic_neutral0">@android:color/system_neutral1_1000</color>
    <color name="m3_ref_palette_dynamic_neutral10">@android:color/system_neutral1_900</color>
    <color name="m3_ref_palette_dynamic_neutral100">@android:color/system_neutral1_0</color>
    <color name="m3_ref_palette_dynamic_neutral20">@android:color/system_neutral1_800</color>
    <color name="m3_ref_palette_dynamic_neutral30">@android:color/system_neutral1_700</color>
    <color name="m3_ref_palette_dynamic_neutral40">@android:color/system_neutral1_600</color>
    <color name="m3_ref_palette_dynamic_neutral50">@android:color/system_neutral1_500</color>
    <color name="m3_ref_palette_dynamic_neutral60">@android:color/system_neutral1_400</color>
    <color name="m3_ref_palette_dynamic_neutral70">@android:color/system_neutral1_300</color>
    <color name="m3_ref_palette_dynamic_neutral80">@android:color/system_neutral1_200</color>
    <color name="m3_ref_palette_dynamic_neutral90">@android:color/system_neutral1_100</color>
    <color name="m3_ref_palette_dynamic_neutral95">@android:color/system_neutral1_50</color>
    <color name="m3_ref_palette_dynamic_neutral99">@android:color/system_neutral1_10</color>
    <color name="m3_ref_palette_dynamic_neutral_variant0">@android:color/system_neutral2_1000</color>
    <color name="m3_ref_palette_dynamic_neutral_variant10">@android:color/system_neutral2_900</color>
    <color name="m3_ref_palette_dynamic_neutral_variant100">@android:color/system_neutral2_0</color>
    <color name="m3_ref_palette_dynamic_neutral_variant20">@android:color/system_neutral2_800</color>
    <color name="m3_ref_palette_dynamic_neutral_variant30">@android:color/system_neutral2_700</color>
    <color name="m3_ref_palette_dynamic_neutral_variant40">@android:color/system_neutral2_600</color>
    <color name="m3_ref_palette_dynamic_neutral_variant50">@android:color/system_neutral2_500</color>
    <color name="m3_ref_palette_dynamic_neutral_variant60">@android:color/system_neutral2_400</color>
    <color name="m3_ref_palette_dynamic_neutral_variant70">@android:color/system_neutral2_300</color>
    <color name="m3_ref_palette_dynamic_neutral_variant80">@android:color/system_neutral2_200</color>
    <color name="m3_ref_palette_dynamic_neutral_variant90">@android:color/system_neutral2_100</color>
    <color name="m3_ref_palette_dynamic_neutral_variant95">@android:color/system_neutral2_50</color>
    <color name="m3_ref_palette_dynamic_neutral_variant99">@android:color/system_neutral2_10</color>
    <color name="m3_ref_palette_dynamic_primary0">@android:color/system_accent1_1000</color>
    <color name="m3_ref_palette_dynamic_primary10">@android:color/system_accent1_900</color>
    <color name="m3_ref_palette_dynamic_primary100">@android:color/system_accent1_0</color>
    <color name="m3_ref_palette_dynamic_primary20">@android:color/system_accent1_800</color>
    <color name="m3_ref_palette_dynamic_primary30">@android:color/system_accent1_700</color>
    <color name="m3_ref_palette_dynamic_primary40">@android:color/system_accent1_600</color>
    <color name="m3_ref_palette_dynamic_primary50">@android:color/system_accent1_500</color>
    <color name="m3_ref_palette_dynamic_primary60">@android:color/system_accent1_400</color>
    <color name="m3_ref_palette_dynamic_primary70">@android:color/system_accent1_300</color>
    <color name="m3_ref_palette_dynamic_primary80">@android:color/system_accent1_200</color>
    <color name="m3_ref_palette_dynamic_primary90">@android:color/system_accent1_100</color>
    <color name="m3_ref_palette_dynamic_primary95">@android:color/system_accent1_50</color> …
Run Code Online (Sandbox Code Playgroud)

android multiview kotlin android-recyclerview material-components-android

96
推荐指数
5
解决办法
6万
查看次数

MaterialComponents主题警告对话框按钮

最近我从支持库切换到com.google.android.material:material:1.0.0

但是现在我有一个问题,在这个页面上有一个注释https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md

注意:使用"材质成分"主题可启用自定义视图填充程序,该填充程序将使用"材质"对应项替换默认组件.目前,这仅使用MaterialButton替换Button XML组件.

我正在使用的主题

Theme.MaterialComponents.Light.NoActionBar
Run Code Online (Sandbox Code Playgroud)

它完全按照它在说明中所说的,它将AlertDialog按钮替换为MaterialButtons,但问题是默认情况下MaterialButtons是彩色背景,现在按钮看起来像这样: 在此输入图像描述

我怎样才能让它们再次无边界和无背景?

PS我正在使用警报构建器来创建警报对话框:

android.app.AlertDialog.Builder
Run Code Online (Sandbox Code Playgroud)

android android-alertdialog android-styles material-design material-components-android

49
推荐指数
7
解决办法
8552
查看次数

BottomSheetDialogFragment的圆角

我有一个自定义的BttomSheetDialogFragment,我希望在底部视图的顶部有圆角

这是我的自定义类,它让我希望从底部显示我的布局

View mView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    mView = inflater.inflate(R.layout.charge_layout, container, false);
    initChargeLayoutViews();
    return mView;
}
Run Code Online (Sandbox Code Playgroud)

我也有这个xml资源文件作为背景:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<corners android:topRightRadius="35dp"
    android:topLeftRadius="35dp"
    />
<solid android:color="@color/white"/>

<padding android:top="10dp"
    android:bottom="10dp"
    android:right="16dp"
    android:left="16dp"/>
Run Code Online (Sandbox Code Playgroud)

但问题是,当我将此资源文件设置为我的Layout的根元素的背景时,角落仍然没有舍入

我不能使用下面的代码:

    this.getDialog().getWindow().setBackgroundDrawableResource(R.drawable.charge_layout_background);
Run Code Online (Sandbox Code Playgroud)

因为它覆盖BottomSheetDialog的默认背景,并且在我的底视图上方不会有任何半透明的灰色

android material-design bottom-sheet material-components material-components-android

48
推荐指数
13
解决办法
2万
查看次数

bottomSheetDialogFragment 全屏

我想要实现的是类似于 Instagram 应用程序内网络浏览器,当您点击广告时使用:

Instagram 网络浏览器

我所做的,是我使用了一个 WebView bottomSheetDialogFragment,然后我重写onCreateDialog以获得这样的全屏:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    BottomSheetDialog bottomSheetDialog=(BottomSheetDialog)super.onCreateDialog(savedInstanceState);
    bottomSheetDialog.setOnShowListener(dialog -> {
        BottomSheetDialog dialogc = (BottomSheetDialog) dialog;
        FrameLayout bottomSheet =  dialogc .findViewById(android.support.design.R.id.design_bottom_sheet);
        BottomSheetBehavior.from(bottomSheet).setState(BottomSheetBehavior.STATE_EXPANDED);
        //BottomSheetBehavior.from(bottomSheet).setSkipCollapsed(true);
        //BottomSheetBehavior.from(bottomSheet).setHideable(true);
    });
    return bottomSheetDialog;
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的结果:

网页浏览器

我的问题是,如何获得全屏效果,或者如何实现类似 instagram 浏览器的功能?

ps:我首先尝试了 chrome 自定义选项卡,但无法将其添加到对话框片段中。

谢谢你。

android material-design bottom-sheet material-components material-components-android

42
推荐指数
9
解决办法
4万
查看次数

无法在android compose Material3中使用rememberScaffoldState()

我想用

记住脚手架状态()

在android Material3 compose中,但无法使用它。

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun AppFeatureScreen(viewModel: AppFeatureViewModel = viewModel()) {
    val scaffoldState = rememberScaffoldState()
    Scaffold() {

    }
}
Run Code Online (Sandbox Code Playgroud)

android kotlin material-components-android android-jetpack-compose android-jetpack-compose-material3

38
推荐指数
3
解决办法
2万
查看次数

如何在android jetpack compose Row中自定义左/右对齐项目

我想要 Jetpack Compose 中的一行,如下所示:

----------------------------------------------------
| A |   B   |                                  | C |
----------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我希望 A 和 B 左对齐,彼此相邻,C 在最后。不知道现有的横向排列是否有办法做到这一点。我还认为,嵌套行可能不是一个好主意。实现这一目标的最佳方法是什么?

android android-jetpack material-components-android android-jetpack-compose

36
推荐指数
1
解决办法
2万
查看次数

java.lang.IllegalArgumentException:此组件要求您指定有效的android:textAppearance属性

我在我的一个布局文件中有一个com.google.android.material.button.MaterialButton组件,当我使用最新版本的Material Components库时,我收到此错误(com.google.android.material:material:1.0 0.0-素α3):

java.lang.IllegalArgumentException:此组件要求您指定有效的android:textAppearance属性.

它不存在于1.0.0-alpha1中.这是库中的错误还是我现在应该只指定textAppearance属性?

android material-components material-components-android

35
推荐指数
5
解决办法
2万
查看次数

如何在AndroidX中的布局XML中添加cardview

如何在AndroidX中的布局XML中添加cardview

升级到AndroidX之后

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="5dp">
Run Code Online (Sandbox Code Playgroud)

给出一个错误

找不到以下类:-android.support.v7.widget.CardView(修复构建路径,编辑XML,创建类)

dependencies {

    implementation 'androidx.appcompat:appcompat:1.0.0'

    implementation 'androidx.cardview:cardview:1.0.0'
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在AndroidX下的xml中使用CardView

谢谢

android android-appcompat android-cardview material-components-android androidx

32
推荐指数
6
解决办法
4万
查看次数

MaterialCardView 与材质崩溃:1.1.0

我使用 MaterialCardView 作为我的cardview布局。现在,Android-studio 开始向我展示,而不是 current implementation "com.google.android.material:material:1.0.0",我应该更新到1.1.0

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/edit_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="vertical"
    android:layout_margin="@dimen/activity_vertical_margin">

  <com.google.android.material.card.MaterialCardView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      app:cardCornerRadius="8dp"
      app:cardElevation="8dp">

      <...more layout>
</com.google.android.material.card.MaterialCardView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

使用 1.1.0,我崩溃了 Error inflating class com.google.android.material.card.MaterialCardView

所以,我有3种情况:

  1. 坚持1.0.0和使用MaterialCardView(工作,但不是首选)
  2. 更新到1.1.0(或 1.2.0-alpha)并使用androidx.CardView(工作,但不是首选)
  3. 更新1.1.0并更改MaterialCardView首选,但不起作用

由于我想使用选项 #3,而且我没有任何解决方案,有人可以提供线索吗?

更新 我的风格(我也有风格和风格之夜。我在这里发布style唯一的):

<resources>

  <!-- Base application theme. -->
  <style name="AppTheme" parent="Theme.AppCompat.DayNight">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-cardview material-components material-components-android

29
推荐指数
4
解决办法
2万
查看次数