【问题标题】:Android material theme alpha color issueAndroid材质主题alpha颜色问题
【发布时间】:2015-03-20 07:49:05
【问题描述】:

我创建了一个构建版本为 5.0 的应用程序,我在下面写了主题

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimaryDark">@color/actionbar_color</item>
    <item name="colorPrimary">@color/actionbar_color</item>
    <item name="colorAccent">@color/actionbar_yellow_color</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:textColorPrimary">@color/edit_text_color</item>
    <item name="android:windowBackground">@drawable/ic_app_background</item>
</style>

当我设置 actionbar_color="#4DFFFFFF" 我的应用程序崩溃了。如果我使用任何非 alpha 颜色,它工作正常我的意思是如果我为 actionbar_color="#FFFFFF" 设置颜色代码它工作正常。

错误是:TaskDescription 的原色应该是不透明的 我已经检查了这个解决方案Android 5.0: howto change Overview Screen Task Title background color,但是对于 alpha 颜色也有同样的错误。 对于不透明度颜色,我已经关注此Hex transparency in colors

崩溃日志

03-20 05:59:41.323: E/AndroidRuntime(2133): 致命异常: main
03-20 05:59:41.323: E/AndroidRuntime(2133): 进程: com.mytaxback, PID: 2133
03-20 05:59:41.323: E/AndroidRuntime(2133): java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.mytaxback/com.mytaxback.LoginActivity}: java.lang.RuntimeException: TaskDescription 的原色应该不透明
03-20 05:59:41.323: E/AndroidRuntime(2133): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
03-20 05:59:41.323: E/AndroidRuntime(2133): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
03-20 05:59:41.323: E/AndroidRuntime(2133): 在 android.app.ActivityThread.access$800(ActivityThread.java:144)
03-20 05:59:41.323: E/AndroidRuntime(2133): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
03-20 05:59:41.323: E/AndroidRuntime(2133): 在 android.os.Handler.dispatchMessage(Handler.java:102)
03-20 05:59:41.323: E/AndroidRuntime(2133): 在 android.os.Looper.loop(Looper.java:135)
03-20 05:59:41.323: E/AndroidRuntime(2133): 在 android.app.ActivityThread.main(ActivityThread.java:5221)
03-20 05:59:41.323: E/AndroidRuntime(2133): 在 java.lang.reflect.Method.invoke(Native Method)
03-20 05:59:41.323: E/AndroidRuntime(2133): 在 java.lang.reflect.Method.invoke(Method.java:372)
03-20 05:59:41.323: E/AndroidRuntime(2133): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
03-20 05:59:41.323: E/AndroidRuntime(2133): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
03-20 05:59:41.323: E/AndroidRuntime(2133): Caused by: java.lang.RuntimeException: TaskDescription 的原色应该是不透明的
03-20 05:59:41.323: E/AndroidRuntime(2133): 在 android.app.ActivityManager$TaskDescription.(ActivityManager.java:536)
03-20 05:59:41.323: E/AndroidRuntime(2133): 在 android.app.Activity.onApplyThemeResource(Activity.java:3677)
03-20 05:59:41.323: E/AndroidRuntime(2133): 在 android.view.ContextThemeWrapper.initializeTheme(ContextThemeWrapper.java:140)
03-20 05:59:41.323: E/AndroidRuntime(2133): 在 android.view.ContextThemeWrapper.setTheme(ContextThemeWrapper.java:85)
03-20 05:59:41.323: E/AndroidRuntime(2133): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2244)
03-20 05:59:41.323: E/AndroidRuntime(2133): ... 10 更多

我在 5.0 操作系统模拟器中遇到了这个问题。它适用于 ICS、KITKAT 给我任何建议。 谢谢,

【问题讨论】:

  • 你在哪里设置了#4DFFFFFF?您使用了Theme.AppCompat.Light.NoActionBar 主题。那么如何设置 Actiobar 颜色呢?
  • 它对我有用,兄弟!你在哪里得到这个错误?
  • @Mishi 我已将此颜色代码放在 values/color.xml 文件中对于操作栏,我使用了工具栏并且我的活动扩展了 ActionBarActivity
  • @Harry 你用 alpha 颜色检查过吗?在主题中哪个是父主题?我的意思是 parent="Theme.AppCompat.Light.NoActionBar" ?
  • 哦!我在 5.0 上也遇到了错误。需要检查其他内容。

标签: android android-theme material-design


【解决方案1】:

我已经像这样为操作栏/工具栏和状态栏分配背景颜色,这里 actionbar_color 颜色是 alpha 颜色

        mToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
        setSupportActionBar(mToolbar);
        TextView mTitle = (TextView) mToolbar.findViewById(R.id.toolbar_title);
        mTitle.setText(getString(R.string.login_title));
        mTitle.setTypeface(Oswald_Medium);
        mToolbar.setNavigationIcon(R.drawable.ic_back_arrow);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });
        mToolbar.setBackgroundColor(getResources().getColor(R.color.actionbar_color));
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
            Window window = getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(getResources().getColor(R.color.actionbar_color));
        }

我注意到,当我使用 Eclipse IDE 编写这个主题时,它会导致错误,而相同的 alpha 颜色在 Android Studio 中运行良好。如果您发现任何更好的解决方案,请在此处发表评论我为 Eclipse 编写了上面的代码,AndroidStudio 不需要此代码

【讨论】:

    【解决方案2】:

    您不能在原色中使用 alfa。 可以看android.app.ActivityManager#TaskDescription的源码

    /**
        * Creates the TaskDescription to the specified values.
        *
        * @param label A label and description of the current state of this task.
        * @param icon An icon that represents the current state of this task.
        * @param colorPrimary A color to override the theme's primary color. This color must be opaque.
        */
        public TaskDescription(String label, Bitmap icon, int colorPrimary) {
          if ((colorPrimary != 0) && (Color.alpha(colorPrimary) != 255)) {
            throw new RuntimeException("A TaskDescription's primary color should be opaque");
          }
    
          mLabel = label;
          mIcon = icon;
          mColorPrimary = colorPrimary;
        }
    

    【讨论】:

      【解决方案3】:

      在 Lollipop 设备上遇到了同样的问题,删除 alpha 颜色修复了我的问题。使用此链接了解问题:http://androidxref.com/7.1.1_r6/xref/frameworks/base/core/java/android/app/ActivityManager.java#982

      【讨论】:

        猜你喜欢
        • 2018-10-12
        • 2022-11-15
        • 2018-09-14
        • 2019-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-31
        • 1970-01-01
        相关资源
        最近更新 更多