我希望我的 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
我正在尝试更改顶部栏的背景颜色并使其像主背景一样。我正在使用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
如何设计带圆角和透明关闭按钮的自定义警报对话框?
android android-alertdialog material-design material-components material-components-android
我正在添加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)
按钮的外观如下:
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
我有问题,我找不到解决方案!我在 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
我正在使用圆形背景和圆形标签指示器设计 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
我正在尝试设置按钮样式,使其没有边框半径。我曾尝试将该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
我遇到了一个问题 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) 我无法让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
我正在努力为项目中的按钮设置正确的样式。我不知道为什么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?
setOnNavigationItemReselectedListenerMaterial Component 版本 1.4.0 已弃用BottomNavigationView 。
现在该用什么?