gpt4 book ai didi

Android 布局主题样式

转载 作者:行者123 更新时间:2023-11-30 01:40:51 28 4
gpt4 key购买 nike

我的问题如下:我有一些默认情况下以浅色为主题的布局,这意味着它们具有白色背景。我的涟漪效果看起来不错,我的小部件看起来也不错。

Light Theme

当我使用深色主题或黑色主题时会出现问题。我的小部件变得不那么明显了,我的波纹也变得不那么明显了,对于较暗的主题应该是白色的。使用深色主题的 Ripple 看起来像这样。

Dark Theme

在深色主题上,波纹仅部分可见,因为背景颜色为 #303030,比 #000000 的波纹更浅。理想情况下,波纹应该是白色的。在黑色主题布局上,波纹是不可见的,因为背景和波纹都是黑色的。我实际上已经通过使用解决了这个问题

android:theme="ThemeOverlay.AppCompat.Dark" 

在我的布局中。如果我使用它,波纹是白色的,小部件也更明显。问题是,当我点击像第一个开关这样的小部件时,应用程序崩溃并给我留下了一个无意义的错误。

编辑:错误如下:

12-29 23:57:39.801 13055-13055/com.company.app E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.company.app, PID: 13055
java.lang.IllegalArgumentException: Expected receiver of type com.company.app.SettingsActivity, but got android.view.ContextThemeWrapper
at java.lang.reflect.Method.invoke(Native Method)
at android.view.View$DeclaredOnClickListener.onClick(View.java:4453)
at android.view.View.performClick(View.java:5204)
at android.widget.CompoundButton.performClick(CompoundButton.java:122)
at android.view.View$PerformClick.run(View.java:21153)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

我怎样才能以这样的方式为我的小部件和我的 Ripple 设置主题,以便在较暗的主题布局上正确显示它们(如上所述)而不会出错?

谢谢!

最佳答案

我的 AppCompat 子类 Activity 遇到了这个问题。我努力搜索并在 Android 的问题跟踪器中发现以下问题:https://code.google.com/p/android/issues/detail?id=174871

AppCompat 的充气器最近似乎出现了一些问题,从布局 xml 中的 OnClick 属性生成的 OnClick 处理程序似乎无法正确处理 ContextWrappers。解决方法是从您的 xml 中删除 OnClick 属性,并在您的代码中以编程方式注册 OnClick 监听器。我认真地在代码中显式注册了我所有的点击事件,并从布局的 xml 文件中的小部件中删除了所有 onClick 属性。那确实解决了它。

今天我发现我自己的应用程序使用 AppCompat DayNight 主题,一个更简单的解决方法是从根布局中删除“android:theme="@style/Theme.AppCompat.DayNight"。我现在可以回去使用小部件的 xml 中的 onClick 属性。我不知道其他 AppCompat 主题是否会导致同样的问题,但不会感到惊讶。我的主要 Activity 使用 AppCompatDelegate.setDefaultNightMode 设置应用程序的主题。希望这会有所帮助,我跑的时候在旁边在此方面,我的代码在 Marshmallow 中进行测试之前一直运行良好,而且几乎找不到任何帮助,正如您所看到的,您的问题在 6 个月内都没有得到解答。

关于Android 布局主题样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34523015/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com