java颜色代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java颜色代码相关的知识,希望对你有一定的参考价值。

参考技术A setTextColor(0xFF0000FF);
//0xFF0000FF是int类型的数据,分组一下0x|FF|0000FF,0x是代表颜色整 数的标记,ff是表示透明度,0000FF表示颜色,注意:这里0xFF0000FF必须是8个的颜色表示,不接受0000FF这种6个的颜色表示。
setTextColor(Color.rgb(255, 255, 255));
setTextColor(Color.parseColor("#FFFFFF"));
//还有就是使用资源文件进行设置
setTextColor(this.getResources().getColor(R.color.blue));
//通过获得资源文件进行设置。根据不同的情况R.color.blue也可以是R.string.blue或者
//另外还可以使用系统自带的颜色类
setTextColor(android.graphics.Color.BLUE);

使用 Java 代码更改自定义 SubMenu 背景颜色

【中文标题】使用 Java 代码更改自定义 SubMenu 背景颜色【英文标题】:Change custom SubMenu background color with Java code 【发布时间】:2016-12-26 18:16:20 【问题描述】:

在我的家庭活动中,我有一个带有自定义 溢出菜单 的工具栏,我希望它改变颜色以符合工具栏背景颜色(导致工具栏背景颜色可以更改(用户更改为自己喜欢的颜色))...我不知道该怎么做:

这是我的overflow_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/overflow_save_current" app:showAsAction="always" android:title="@string/overflow_save_current" android:icon="@drawable/ic_action_save_light" />
<item android:id="@+id/overflow_settings" app:showAsAction="always" android:title="@string/overflow_settings" android:icon="@drawable/ic_action_settings_light" />
<item android:id="@+id/overflow_overflow" app:showAsAction="always" android:icon="@drawable/ic_action_overflow_light">
    <menu>
        <item android:id="@+id/overflow_feed_back" app:showAsAction="never|withText" android:title="@string/overflow_feed_back" android:icon="@drawable/ic_action_send_now_light" />
        <item android:id="@+id/overflow_about_us" app:showAsAction="never|withText" android:title="@string/overflow_about_us" android:icon="@drawable/ic_action_about_light" />
        <item android:id="@+id/overflow_exit" app:showAsAction="never|withText" android:title="@string/overflow_exit" android:icon="@drawable/ic_action_forward_light" />
    </menu>
</item>

这是OnPrepareOptionsMenu() 方法:

@Override
public boolean onPrepareOptionsMenu(Menu menu) 
    /* Resources res = getResources();
    item = menu.findItem(R.id.overflow_feed_back);
    SpannableStringBuilder builder = new SpannableStringBuilder("* " + res.getString(R.string.overflow_feed_back));
    builder.setSpan(new ImageSpan(this, android.R.drawable.ic_menu_send), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    item.setTitle(builder); */
    if (!Common.compatible(Common.color, 0xFF000000)) 
        menu.findItem(R.id.overflow_save_current).setIcon(R.drawable.ic_action_save_dark);
        menu.findItem(R.id.overflow_settings).setIcon(R.drawable.ic_action_settings_dark);
        menu.findItem(R.id.overflow_overflow).setIcon(R.drawable.ic_action_overflow_dark);
     else 
        menu.findItem(R.id.overflow_save_current).setIcon(R.drawable.ic_action_save_light);
        menu.findItem(R.id.overflow_settings).setIcon(R.drawable.ic_action_settings_light);
        menu.findItem(R.id.overflow_overflow).setIcon(R.drawable.ic_action_overflow_light);
    
    return super.onPrepareOptionsMenu(menu);

我已经尝试更改每个元素的背景颜色...但我每次都得到 NPE,menu.findItem(R.id.overflow_about_us).getActionView().setBackgroundColor(Color.BLUE);

希望你能为我找到解决方案,Darkball60

【问题讨论】:

【参考方案1】:

所以......没有人帮助我......所以我不得不独自工作......几个小时......最终找到解决方案:

@Override
public View onCreateView(String name, Context context, AttributeSet attrs)  
    // Do you own inflater stuff here 
    // Check for menu items (Options menu AKA menu key) 
    if (name.equalsIgnoreCase("android.support.v7.view.menu.ListMenuItemView")) 
        try  
            // Ask our inflater to create the view 
            final View view = LayoutInflater.from(context).createView(name, null, attrs); 
            // Kind of apply our own background 
            new Handler().post(new Runnable() 
                public void run() 
                    if (!Common.compatible(Common.color, 0xFF000000)) 
                        try 
                            ((TextView)((RelativeLayout)((ListMenuItemView)view).getChildAt(1)).getChildAt(0)).setTextColor(0xFFFFFFFF);
                         catch (ClassCastException e) 

                        
                     else 
                        try 
                            ((TextView)((RelativeLayout)((ListMenuItemView)view).getChildAt(1)).getChildAt(0)).setTextColor(0xFF000000);
                         catch (ClassCastException e) 

                        
                    
                    view.setBackgroundColor(Common.color);
                
            );
            return view;
         catch (InflateException e) 

         catch (ClassNotFoundException e) 

        
    
    return null; 

如果背景是暗的……那么 textColor 是白色的……如果背景是浅的,那么 textColor 是黑色的。

下面是两个不同工具栏颜色的屏幕:

希望它对我以外的其他人有所帮助,Darkball60(如果你喜欢这个答案......请随意投票:))

【讨论】:

没问题。实际上很难弄清楚如何直接在 Java 中做到这一点以便能够动态更改它

以上是关于java颜色代码的主要内容,如果未能解决你的问题,请参考以下文章

java 编程 背景颜色的改变

使用 Java 代码更改自定义 SubMenu 背景颜色

java窗口的背景颜色

纠正用于回溯图着色算法的 Java 递归代码

android怎样在代码中设置颜色

改变PDF文档颜色空间的Java代码