我正在尝试创建一个概述的材质组件按钮,但是除了笔画之外,我还需要它具有半透明的背景。
到目前为止,这是我的 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)
这就是这个样子:
问题在于,按钮周围的笔划之外的一些背景是可见的(笔划宽度越大,出现的白色像素就越多)。
例如,这是一个5dp中风:
有没有办法解决这个问题,有更好的方法来设置背景颜色,或者其他什么?
android android-layout android-button material-components material-components-android
不知道我错过了什么,但每次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
由于我的项目中的一些需求,我必须使用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
我想定制一个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
我目前正在开始使用材质组件主题。入门指南提到了以下主题:
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)
但没有对它们的描述。我在哪里可以找到有关这些主题的更多详细信息,或者有人可以在答案中解释它们吗?仅举个例子:
[..].NoActionBar?如果我不需要操作栏,我不会将其包含在我的布局文件中,所以我真的不明白这一点。Theme.MaterialComponents?或者我总是使用Theme.MaterialComponents.Lightor Theme.MaterialComponents.DayNight?我的代码:
<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
我有一个带有这样链接的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)
它显示为可点击的链接,但实际上无法点击它
我找不到使用setMovementMethod中的消息的方法MaterialAlertDialogBuilder。有什么办法让它可以点击吗?
android android-alertdialog clickablespan spannablestringbuilder material-components
我创建了一个扩展 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
我正在从 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
我的应用程序使用材料组件ios的零食店.我想改成BackgroundColor蓝色,但我不能.
那么有可能改变小吃店的背景颜色吗?