java 我想在Andorid Studio中转换一些颜色十六进制,但是,其中一些会抛出错误?如何修复?

egdjgwm8  于 2022-10-30  发布在  Java
关注(0)|答案(2)|浏览(93)

我使用Retrofit从api.stackoverflow中检索了一些数据。下面是其中的一些:#FFF,#666,#5A8F53,#1B8FBB.然后我想使用它们的textView.setBackgroundColor属性.所以,我使用Color.parseColor()方法.但是,出现了无法识别颜色的错误.如何解决这个问题?

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    LayoutInflater layoutInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View view=layoutInflater.inflate(R.layout.p203customrow,parent,false);   
    ImageView imageViewP203= (ImageView)view.findViewById(R.id.imageViewP203);
    TextView textViewNameP203= (TextView)view.findViewById(R.id.textViewNameP203);
    TextView textViewSiteUrlP203= (TextView)view.findViewById(R.id.textViewSiteUrlP203);

    P203ApiStyle.P203ItemsObjects p203ItemsObjects= p203ItemsObjectsList.get(position);
    Map<String,String> mapStyle=p203ItemsObjects.getStyling();
    String backgroundColor= mapStyle.get("tag_background_color");
    String foregroundColor= mapStyle.get("tag_foreground_color");

    textViewNameP203.setText("Name="+p203ItemsObjects.getName()+" BackgroundColor="+backgroundColor);  
//one result--> Name=Webmasters BacgroundColor=#FFF
    textViewSiteUrlP203.setText("SiteUrl=" + p203ItemsObjects.getSite_url() + " BackgroundColor=" + foregroundColor);
 //one result-->SiteUrl=The url BackgoundColor=#1B8FBB

//when I uncommet to this block that error occurs...
  /*  textViewNameP203.setBackgroundColor(Color.parseColor(backgroundColor));
    textViewSiteUrlP203.setBackgroundColor(Color.parseColor(foregroundColor));*/

    Picasso.with(context).load(p203ItemsObjects.getIcon_url()).resize(100, 100).into(imageViewP203);
    return view;
}
rekjcdws

rekjcdws1#

将网页安全色更改为十六进制色

//if statement for some websafe color to change it hex color exp #FFF -->    #FFFFFF
    if(backgroundColor.length()==4){  
        char harf= backgroundColor.charAt(1);
        String suffix=String.valueOf(harf)+String.valueOf(harf)+String.valueOf(harf);
        backgroundColor=backgroundColor.concat(suffix);
    }
textViewNameP203.setBackgroundColor(Color.parseColor(backgroundColor));
qzwqbdag

qzwqbdag2#

正如我在评论中提到的,在你的代码中,你使用的是websafe颜色而不是十六进制颜色。
十六进制颜色是使用以下命令指定的:#RRGGBB,其中RR(红色)、GG(绿色)和BB(蓝色)十六进制整数指定颜色的组件。所有值都必须介于00FF之间。

  • 例如,#0000FF值呈现为蓝色,因为蓝色组件设置为其最高值(FF),而其他组件设置为最低值(00)。*
    因此,您必须将网页安全色彩变更为十六进制色彩。请在您的程式码中,将#FFF变更为#FFFFFF,并将#666变更为#666666

请检查此处以查看the available colors sorted by name.
并在此处查看the material color codes.

相关问题