标签: material-components

为轮廓材质组件按钮的背景着色

我正在尝试创建一个概述的材质组件按钮,但是除了笔画之外,我还需要它具有半透明的背景。

到目前为止,这是我的 XML 代码:

<android.support.design.button.MaterialButton
    android:id="@+id/foo"
    style="@style/Widget.MaterialComponents.Button.TextButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    app:backgroundTint="#CFFF"
    app:strokeColor="@color/colorAccent"
    app:strokeWidth="2dp" />
Run Code Online (Sandbox Code Playgroud)

这就是这个样子:

具有 2dp 行程的按钮

问题在于,按钮周围的笔划之外的一些背景是可见的(笔划宽度越大,出现的白色像素就越多)。

例如,这是一个5dp中风:

具有 5dp 行程的按钮

有没有办法解决这个问题,有更好的方法来设置背景颜色,或者其他什么?

android android-layout android-button material-components material-components-android

5
推荐指数
1
解决办法
2101
查看次数

TextInputLayout 下划线颜色在聚焦时不适应自定义颜色

不知道我错过了什么,但每次edittext聚焦时,下划线颜色都不会适应我设置的自定义颜色。这是我的主题代码供参考

<style name="EditTextHintWhite" parent="@style/AppTheme">
   <item name="color">@color/white</item>
   <item name="android:textColorHint">@color/white</item>
   <item name="colorControlNormal">@color/white</item>
   <item name="colorControlActivated">@color/white</item>
   <item name="colorError">@color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我已将它们全部设置为白色,但不知何故,当焦点edittext聚焦时,下划线变成绿色

在此输入图像描述

这是我的布局代码

<com.google.android.material.textfield.TextInputLayout
        android:id="@+id/email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/EditTextHintWhite">

        <androidx.appcompat.widget.AppCompatEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/email"
            android:inputType="textEmailAddress"
            android:maxLines="1"
            android:shadowColor="@color/white"
            android:singleLine="true"
            android:textColor="@color/white"
            app:backgroundTint="@color/white" />

</com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

android android-textinputlayout textinputlayout material-components material-components-android

5
推荐指数
1
解决办法
4894
查看次数

MaterialComponents 中 AppCompat.Button.Borderless 的替代品是什么?

由于我的项目中的一些需求,我必须使用MaterialComponents,所以我以前的UI变得混乱,我需要改变它。

上一张带有 AppCompat 的图片:

在此输入图像描述

带有 MaterialComponents 的新图像:

在此输入图像描述 代码:

<style name="ButtonBorderless" parent="Base.Widget.AppCompat.Button.Borderless">
    <item name="android:minHeight">0dp</item>
    <item name="android:minWidth">0dp</item>
    <item name="android:textSize">14sp</item>
</style>
Run Code Online (Sandbox Code Playgroud)

主要款式:

<style name="DayTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
Run Code Online (Sandbox Code Playgroud)

按钮:

<Button
                                    android:id="@+id/btn_interval_decrease"
                                    style="@style/ButtonBorderless"
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:layout_weight="1"
                                    android:paddingLeft="10dp"
                                    android:paddingTop="5dp"
                                    android:paddingRight="10dp"
                                    android:paddingBottom="5dp"
                                    android:text="-"
                                    android:textColor="?attr/icon_color"
                                    android:textSize="20dp" />
Run Code Online (Sandbox Code Playgroud)

请注意:此图中有两个问题:1.无边框按钮2.检查WE按钮,它的最后一部分正在切割

完整的 XML:

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:cardCornerRadius="8dp"
    android:background="?attr/cardbackgroundColor"
    app:cardElevation="4dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/cardbackgroundColor">

        <LinearLayout
            android:id="@+id/main_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:background="?attr/cardbackgroundColor"
            android:padding="15dp">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="?attr/cardbackgroundColor"
                android:padding="15dp">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:text="@string/repeat"
                    android:textColor="?attr/day_colorDarkGray_night_colorWhite"
                    android:textSize="16sp"
                    android:textStyle="bold" />

                <Switch …
Run Code Online (Sandbox Code Playgroud)

android android-button material-components material-components-android

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

Android Material Chip 主题覆盖

我想定制一个Material芯片。

我认为这是如何做到的:

<style name="AppTheme" parent="Theme.MaterialComponents.NoActionBar">

    .... lots more theme stuff here

    <item name="chipStyle">@style/MaterialChips</item>
    <item name="chipGroupStyle">@style/MaterialChips</item>
    <item name="chipStandaloneStyle">@style/MaterialChips</item>
</style>

<style name="MaterialChips" parent="Widget.MaterialComponents.Chip.Choice">
    <item name="chipBackgroundColor">@color/chips</item>
</style>
Run Code Online (Sandbox Code Playgroud)

像这样的标签都不会chipStyle影响芯片。但如果我app:chipBackgroundColor="@color/chips"在 xml 中设置它就可以了。

对于其他事情,比如 say ,它也可以很好地工作<item name="materialAlertDialogTheme">@style/AlertDialogTheme</item>

材料文档(如果你可以这样称呼它的话)确实没有帮助。

android material-design android-chips material-components material-components-android

5
推荐指数
1
解决办法
2373
查看次数

Material Components 主题的描述?

我目前正在开始使用材质组件主题。入门指南提到了以下主题:

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

但没有对它们的描述。我在哪里可以找到有关这些主题的更多详细信息,或者有人可以在答案中解释它们吗?仅举个例子:

  1. 什么意思[..].NoActionBar?如果我不需要操作栏,我不会将其包含在我的布局文件中,所以我真的不明白这一点。
  2. 我什么时候只使用Theme.MaterialComponents?或者我总是使用Theme.MaterialComponents.Lightor Theme.MaterialComponents.DayNight
  3. 这些主题看起来怎么样?我找不到任何预览,也不想自己全部尝试 - 可能需要一些时间来了解 Android 上可用的所有小部件。
  4. 这些主题定义了什么?只有颜色吗?文字风格?字体系列?

android themes material-components

5
推荐指数
1
解决办法
2552
查看次数

无法使用材质组件库设置按钮的背景颜色

我的代码:

<Button
     android:id="@+id/button_one"
     style="@style/ButtonStyle"
     android:text="@string/button_one" />
Run Code Online (Sandbox Code Playgroud)
<style name="ButtonStyle">
     <item name="android:textSize">32sp</item>
     <item name="android:textColor">@drawable/background_button_text_color</item>
     <item name="android:background">@drawable/background_button</item
</style>
Run Code Online (Sandbox Code Playgroud)

背景按钮.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white" android:state_pressed="true" />
    <item android:drawable="@android:color/transparent" android:state_pressed="false" />
</selector>
Run Code Online (Sandbox Code Playgroud)

背景_按钮_文本_颜色.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@android:color/black" android:state_pressed="true" />
    <item android:color="@android:color/white" android:state_pressed="false" />
</selector>
Run Code Online (Sandbox Code Playgroud)

当按下按钮时,我得到的是黑色背景而不是白色。不确定我做错了什么。有什么帮助吗?
我正在1.2.0-alpha06使用并使用Theme.MaterialComponents.DayNight.NoActionBar.

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

5
推荐指数
4
解决办法
3434
查看次数

如何使 MaterialAlertDialogBu​​ilder 中的 ClickableSpan 链接可点击?

我有一个带有这样链接的SpannableStringBuilder对象,ClickableSpan

SpannableStringBuilder ssb = new SpannableStringBuilder("Hi StackOverflow!");

ClickableSpan clickableSpan = new ClickableSpan() {
    @Override
    public void onClick(@NonNull View widget) {
        Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_SHORT).show();
    }
};

ssb.setSpan(clickableSpan, 3, 16, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
Run Code Online (Sandbox Code Playgroud)

TextView当我将其设置为 a并使用后效果很好textView.setMovementMethod(LinkMovementMethod.getInstance())

当我将ssb对象设置为 时MaterialAlertDialogBuilder

new MaterialAlertDialogBuilder(this)
                .setTitle("My Dialog")
                .setMessage(ssb)
                .show();
Run Code Online (Sandbox Code Playgroud)

它显示为可点击的链接,但实际上无法点击它 MaterialAlertDialogBu​​ilder 预览 我找不到使用setMovementMethod中的消息的方法MaterialAlertDialogBuilder。有什么办法让它可以点击吗?

android android-alertdialog clickablespan spannablestringbuilder material-components

5
推荐指数
1
解决办法
1646
查看次数

Android iconGravity 不适用于具有 CircularProgressIndicator 的 MaterialButton

我创建了一个扩展 MaterialButton 的自定义视图,在加载时用 CircularProgressIndicator 替换可绘制对象。

但是,当我用 CircularProgressIndicator 替换可绘制对象时, iconGravity 不再起作用。我不明白我做错了什么。

我已经能够将课程归结为:

class LoadingButton constructor(context: Context) : MaterialButton(context) {

    private val progressIndicatorDrawable by lazy {
        val progressIndicatorSpec = CircularProgressIndicatorSpec(context, null, 0, R.style.Widget_MaterialComponents_CircularProgressIndicator_ExtraSmall)
        progressIndicatorSpec.indicatorColors = intArrayOf(getColor(context, R.color.white))
        IndeterminateDrawable.createCircularDrawable(context, progressIndicatorSpec).apply {
            setVisible(true, true)
        }
    }

    init {
        // the following drawable is aligned to the start of the view (incorrect).
        icon = progressIndicatorDrawable
        // the following drawable is aligned to the start of the text (correct).
        // icon = DrawableUtil.getDrawable(context, R.drawable.icon_delete)
        text = …
Run Code Online (Sandbox Code Playgroud)

android progress-indicator android-gravity material-components material-components-android

5
推荐指数
1
解决办法
906
查看次数

Material 3materialThemeOverlay 生成没有主题的亮粉色按钮

我正在从 M2 迁移到 M3,但我的基本功能materialThemeOverlay不再起作用。我密切关注文档底部的代码,它与我对 M2 的代码非常匹配:

样式.xml

<style name="SecondaryThemeOverlay" parent="">
    <item name="colorPrimary">@color/md_theme_light_secondary</item>
    <item name="colorOnPrimary">@color/md_theme_light_onSecondary</item>
</style>

<style name="Widget.Button.Secondary" parent="Widget.Material3.Button">
    <item name="materialThemeOverlay">@style/SecondaryThemeOverlay</item>
</style>
Run Code Online (Sandbox Code Playgroud)

布局.xml:

<Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="Standard Button" />

<Button
  style="@style/Widget.Button.Secondary"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="Standard Button Secondary" />
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

lib 版本是com.google.android.material:material:1.6.0-beta01,Activity 是 AppCompatActivity。

应用程序主题父级是Theme.Material3.DayNight.NoActionBar.

另请注意,设置backgroundTint效果很好。

android android-theme material-design material-components material-components-android

5
推荐指数
1
解决办法
2247
查看次数

是否可以更改ios的snackbar的BackgroundColor?

我的应用程序使用材料组件ios的零食店.我想改成BackgroundColor蓝色,但我不能.

那么有可能改变小吃店的背景颜色吗?

ios swift snackbar material-components

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