标签: material-components-android

Material Design 3:如何使工具栏与主表面颜色相同?

我希望我的 Android 应用程序的工具栏与主表面颜色相同(以及状态栏——这已经是干净的 Android Studio 项目中开箱即用的主表面颜色)。我的目标是 Material Design 3 UI 指南。

对于以前版本的 Android,有各种现有的答案,质量各异,涉及运行相当长的样式和主题兔子洞,以捕获工具栏中错误的 UI 部分(图标、菜单等)。在 Android 的各种早期版本中,存在主题覆盖以及可生成浅色/浅色工具栏或深色/深色工具栏应用程序的主题变体。但这些钩子似乎都不存在于 Material3 中——根据设计,Material3 应该具有相同颜色的工具栏。

使用相对默认的配置,我的工具栏是(我认为)原色背景,白天为白色文本,晚上为白色背景上的黑色(主?)文本(相对于主表面和辅助表面相反)。而且我找不到道德上相当于白天/夜间主题的灯光工具栏灯光背景,希望能够尊重那些拥有 android 12++ 的壁纸匹配颜色(我确实如此)。

我觉得我在这里缺少一些简单的东西。

Fwiw,我没有使用 CoordinatoryLayout/AppLayout —— 只是一个裸露的工具栏,因为之前与 CoordinatorLayout 的不愉快争论以及在全屏模式下运行 Activites,我也将在这个项目中这样做。(CoordinatorLayout 没有给我任何我想要的东西,并且破坏了很多我想要的)。

我确实尝试在工具栏上设置明确的颜色,并且当图标没有改变颜色时运行到这里。(我以前已经走过这条路,至少在三个版本的 Android 上。:-P)。

该应用程序是一个新创建的(大约一周前)Android 应用程序,使用 Android studio 和最新的 SDK 创建。应用程序主题似乎已指向材料 2,尽管材料 3 的所有依赖项都是最新的。很难说;所有 Android 文档都告诉您如何迁移旧应用程序,而不是如何创建新应用程序——这是一个奇怪的遗漏。

android material-design material-components-android android-12

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

为什么顶部栏的背景颜色会自动变化而不是按照我设置的变化?材料设计3

我正在尝试更改顶部栏的背景颜色并使其像主背景一样。我正在使用Material You (MD3)

用户可以从浅色模式更改为深色模式,反之亦然。

这是我尝试做的:

值\主题.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.App" parent="Theme.Material3.Light.NoActionBar">
        <item name="android:colorBackground">@color/md_theme_light_background</item>
        ...
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

值夜\themes.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.App" parent="Theme.Material3.Dark.NoActionBar">
        <item name="android:colorBackground">@color/md_theme_dark_background</item>
        ...
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

颜色.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="md_theme_light_background">#FCFDF7</color>
    <color name="md_theme_dark_background">#1A1C19</color>
    ...
</resources>
Run Code Online (Sandbox Code Playgroud)

活动主文件

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".activities.MainActivity">

    <com.google.android.material.appbar.MaterialToolbar
        android:id="@+id/topBar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?android:attr/colorBackground"
        android:elevation="4dp"
        app:title="@string/app_name" />

    ...

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

结果(深色模式)

在此输入图像描述

正如你所看到的,顶部栏的背景颜色一定是,#1A1C19但它变成了#222E22,从哪里来的#222E22

我试图在 MD3 文档中找到任何有关此内容的内容,但没有找到任何内容。你能告诉我为什么颜色会自动改变吗?

注意:如果我md_theme_dark_background从 …

android material-design android-toolbar material-components-android

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

0
推荐指数
3
解决办法
5361
查看次数

图标没有出现在 MaterialButton android studio 中

我正在添加MaterialButton到我的 android 项目,它只显示文本而不是文本和图标,这是我的代码:

    <com.google.android.material.button.MaterialButton
        android:id="@+id/homeBtn1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:layout_marginBottom="8dp"
        android:gravity="center"
        android:textAllCaps="true"
        android:textColor="#F8F8F8"
        android:background="#3F51B5"
        android:text="@string/findTrans"
        app:icon="@drawable/white_bus_icon"
        app:iconGravity="textStart"
        app:iconTint="@null"
        app:layout_constraintBottom_toTopOf="@+id/button2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/imageView2"
         />
Run Code Online (Sandbox Code Playgroud)

按钮的外观如下:

在此输入图像描述

android material-components-android

0
推荐指数
1
解决办法
2439
查看次数

com.android.support:design:28.0.0 - Version 28 is the last version of the legacy support library

In my android project in xml I try to use com.google.android.material.textfield.TextInputEditText

like this:

        <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/editTextEmail"
                style="@style/textTextViewStyle"
                android:layout_width="0dp"
                android:layout_height="@dimen/min_height"
                android:layout_margin="@dimen/default_margin"
                android:hint="@string/email"
                android:inputType="textEmailAddress"
                android:padding="@dimen/half_default_margin"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textViewAppName" />
Run Code Online (Sandbox Code Playgroud)

in gradle.properties

android.useAndroidX=true
android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)

In app/build.gradle:

android {
    dataBinding {
        enabled = true
    }
    compileSdkVersion 29
    defaultConfig {
        applicationId "com.myapp"
        minSdkVersion 23
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.android.support:design:28.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
Run Code Online (Sandbox Code Playgroud)

but I get …

android material-design android-support-design material-components-android androidx

0
推荐指数
1
解决办法
943
查看次数

如何修复错误膨胀类 android.support.design.widget.NavigationView

我有问题,我找不到解决方案!我在 XML 中使用:

<?xml version="1.0" encoding="utf-8"?>

    <androidx.drawerlayout.widget.DrawerLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      android:id="@+id/activity_main"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      tools:context="com.example.libraryproject.MainActivity"
      android:background="@android:color/holo_green_dark">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Main"
            android:textSize="50dp"
            android:id="@+id/textView"
            android:layout_marginTop="200dp"
            android:layout_marginLeft="130dp"/>


    </RelativeLayout>

    <android.support.design.widget.NavigationView ------! #32
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        app:menu="@menu/navigation_menu"
        android:layout_gravity="start"
        app:headerLayout="@layout/navigation_header"
        android:id="@+id/nv">
    </android.support.design.widget.NavigationView>

</androidx.drawerlayout.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

错误显示是:android.view.InflateException: Binary XML file line #32: Binary XML file line #32: Error inflating class android.support.design.widget.NavigationView

在应用程序中: 应用页面

java android android-navigationview material-components-android androidx

0
推荐指数
1
解决办法
5235
查看次数

如何在 TabLayout 中获取圆形标签指示器以填充圆形标签指示器背景?

我正在使用圆形背景和圆形标签指示器设计 TabLayout。在下面的图片链接中,可以看到我的白色标签周围有某种填充。如何摆脱填充并完全填充选项卡?

我附上了我的选项卡布局的代码。我的背景和 tabIndicator 绘图是在草图中设计的 - 尺寸与下面的“预期结果”完全相同。

<com.google.android.material.tabs.TabLayout
            android:id="@+id/newgroup_tabs"
            android:layout_width="0dp"
            android:layout_height="45dp"
            android:layout_marginTop="22dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:background="@drawable/newgroup_tabbg"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/tvnewgroups_title"
            app:tabGravity="fill"
            app:tabInlineLabel="true"
            app:tabIndicator="@drawable/newgroup_tabindicatorwide"
            app:tabIndicatorColor="@color/white"
            app:tabIndicatorFullWidth="true"
            app:tabIndicatorGravity="center"
            app:tabIndicatorHeight="54dp"
            app:tabMode="fixed"
            app:tabTextColor="@color/black" />
Run Code Online (Sandbox Code Playgroud)

我的预期结果应该是这样的,https://ibb.co/XYZ2jkS

但我实际得到的是这个,https://ibb.co/Lz1C0Fy

如何让我的设计看起来像预期的图像?任何帮助将不胜感激,谢谢!

android android-layout android-tablayout material-components material-components-android

0
推荐指数
1
解决办法
1268
查看次数

Android 样式:将边框设置为 0sp 不会删除材质按钮的边框半径

我正在尝试设置按钮样式,使其没有边框半径。我曾尝试将该radius属性设置为0sp,但这不起作用。下面是我的代码和结果按钮的屏幕截图,它仍然有圆角。

<com.google.android.material.button.MaterialButton
        android:id="@+id/material_text_button"
        style="@style/Widget.MaterialComponents.Button.OutlinedButton"
        android:textAppearance="@style/Widget.MaterialComponents.Button.OutlinedButton"
        android:layout_marginTop="11sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:radius="0sp"
        android:text="#1 Lorem Ipsum"
        android:textSize="16sp"/>
Run Code Online (Sandbox Code Playgroud)

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

0
推荐指数
1
解决办法
662
查看次数

如何使 Slider 在 Android 上运行?

我遇到了一个问题 Slider (Seekbar) 在 Android 上对我不起作用。我收到此错误:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.tutorme, PID: 16570
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.tutorme/com.example.tutorme.activities.FilterTutorActivity}: android.view.InflateException: Binary XML file line #26 in com.example.tutorme:layout/activity_filter_tutor: Binary XML file line #60 in com.example.tutorme:layout/content_filter_tutor: Error inflating class com.google.android.material.slider.Slider
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: android.view.InflateException: Binary XML file line #26 in com.example.tutorme:layout/activity_filter_tutor: Binary XML file line #60 in …
Run Code Online (Sandbox Code Playgroud)

android kotlin material-design material-components-android

0
推荐指数
1
解决办法
1111
查看次数

BadgeDrawable 不会出现在 BottomNavigationView 以外的元素上

我无法让BadgeDrawable正常工作。

使用它没有问题BottomNavigationView

navView.setupWithNavController(navController)
val badge = navView.getOrCreateBadge(R.id.navigation_home)
badge.number = 12
Run Code Online (Sandbox Code Playgroud)

但当我想在其他元素上使用它时,它不会显示。像这样:

val badgeDrawable = BadgeDrawable.create(context!!)
badgeDrawable.number = 32
BadgeUtils.attachBadgeDrawable(badgeDrawable, textView, root.findViewById(R.id.frame_layout))
Run Code Online (Sandbox Code Playgroud)

我使用 FrameLayout 只是因为这个问题修复似乎尚未发布。

布局:

<FrameLayout
    android:id="@+id/frame_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <ImageView
        android:id="@+id/text_home"
        android:src="@drawable/ic_home_black_24dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:textSize="20sp" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

我正在使用最新的库版本:'com.google.android.material:material:1.2.0-rc01'

我尝试过不同的方法。但运气不好。难道这其中有什么我所遗漏的秘密吗?

这是该项目的 git 存储库(尽可能简单):https ://github.com/marcinkunert/badgeissue

徽章可绘制未显示

android kotlin android-drawable android-studio material-components-android

0
推荐指数
1
解决办法
2427
查看次数

材质按钮样式形状外观不起作用

我正在努力为项目中的按钮设置正确的样式。我不知道为什么shapeAppearance不工作。即使我只使用cornerSize它也不起作用。

我有一个按钮的基本样式:

<style name="SnButton" parent="Widget.MaterialComponents.Button.UnelevatedButton">
    <item name="shapeAppearance">@style/MyShapeAppearance</item>
    <item name="backgroundTint">@null</item>
</style>
Run Code Online (Sandbox Code Playgroud)

这是我的按钮形状外观:

<style name="MyShapeAppearance" parent="ShapeAppearance.MaterialComponents.SmallComponent">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">2dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)

这是我的基本主题:Theme.MaterialComponents.Light.NoActionBar.Bridge

在我的情况下,我应该怎么做才能强制shapeAppearance工作?或者至少cornerSize

android-button material-design material-components-android

0
推荐指数
1
解决办法
778
查看次数

0
推荐指数
1
解决办法
2417
查看次数