我在使用TextDrawable时遇到问题 – 我想为同一个用户显示相同的颜色 – int color2 = generator.getcolor(“user@gmail.com”);,在我的情况下使用userID作为键,而是什么我得到的是所有userID的相同颜色.我在ListVIEw和现在的RecyclerVIEw中尝试了这个,但总是相同的结果 – 我的所有联系人共享相同的颜色.
这是我的ContactsAdapter的代码:
@OverrIDepublic voID onBindVIEwHolder(ContactsAdapter.ContactsVIEwHolder holder, int position) { Contact contact = contactList.get(position); holder.username.setText(contact.getUsername()); TextDrawable.IBuilder builder = TextDrawable.builder() .beginConfig() .withborder(0) .toupperCase() .endConfig() .round(); colorGenerator generator = colorGenerator.MATERIAL; // generate random color int color1 = generator.getRandomcolor(); // generate color based on a key (same key returns the same color), useful for List/grID vIEws int color2 = generator.getcolor(holder.getItemID()); //int color2 = generator.getcolor("user@gmail.com"); TextDrawable textDrawable = builder.build(contactList.get(position).getUsername().substring(0,1), color2); holder.thumbnail.setimageDrawable(textDrawable);}
如果我使用int color2 = generator.getcolor(holder.username);我得到相同名称的不同颜色,如果我使用int color2 = generator.getcolor(holder.getItemID());我为每个userID获得相同的颜色.
解决方法:
如果我正确理解了这个问题,当你取消注释int color2 = generator.getcolor(“user@gmail.com”);你希望同一个用户拥有相同的颜色,但其他用户有其他颜色.
generator.getcolor(“some_example_string”)将不断为列表中的每个用户返回相同的颜色.我看到你从github上复制了粘贴,你希望它适合你.请注意作者的上一行:
// generate color based on a key
您必须提供密钥,并根据该密钥生成颜色.假设您的用户名可能被视为密钥,您可以执行以下 *** 作:
generator.getcolor(user.getname()); // e.g. "John Doe"
现在,每次为John Doe生成相同的颜色,为其他用户生成不同的颜色.
总结以上是内存溢出为你收集整理的java – TextDrawable – 根据键显示颜色(email,id)全部内容,希望文章能够帮你解决java – TextDrawable – 根据键显示颜色(email,id)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)