Android 无需findViewById()以编程方式更改可绘制xml文件的颜色
所以我想做的是Android 无需findViewById()以编程方式更改可绘制xml文件的颜色,android,colors,drawable,Android,Colors,Drawable,所以我想做的是 获取可绘制形状(xml文件) 获得可绘制的颜色 使用colors.xml中提供的颜色更改其颜色 在CardView上将可绘制设置为某个ImageView(这不是问题) 代码如下:- colors.xml <?xml version="1.0" encoding="utf-8"?> <resources> <color name="md_red_900">#B71C1C</color> <color name="
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="md_red_900">#B71C1C</color>
<color name="md_pink_900">#880E4F</color>
<color name="md_purple_900">#4A148C</color>
<color name="md_deep_purple_900">#311B92</color>
...
<!--15 more colors-->
</resources>
#B71C1C
#880E4F
#4A148C
#311B92
...
shape_template.xml(可绘制形状):-
MainColorPaletteAdapter.java(我想在其中更改drawable的颜色):-
package com.danish.foveros.adapter;
导入android.graphics.drawable.drawable;
导入android.media.Image;
导入android.support.v7.widget.RecyclerView;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ImageView;
导入android.widget.TextView;
import com.danish.foveros.R;
导入java.util.ArrayList;
导入java.util.List;
公共类MainColorPaletteAdapter扩展了RecyclerView.Adapter{
列出螨类;
字符串[]颜色名称;
int[]彩色缩略图;
int[]所有材料颜色900;
int[]colorname背景色;
公共主颜色调色板适配器(){
超级();
mItems=新的ArrayList();
主颜色调色板设置颜色;
colorName=新字符串[]{“琥珀色”、“棕色”、“青色”、“青色”};
colorThumbnail=newint[]{R.drawable.amber,R.drawable.brown,
R.drawable.cyan,R.drawable.teal};
colorNameBackgroundColor=newint[]{R.color.md_琥珀色_900,R.color.md_棕色_900,
R.color.md_青色_900,R.color.md_青色_900};
for(int i=0;i
我尝试过很多方法,但他们说通过findViewById()获得视图的可绘制或背景色,但这对我不起作用
正如您所看到的,可拉伸形状是一个非常简单的形状,所以它可能不难做到这一点
我原以为创建19个可绘制的xml文件,我可以得到一个可绘制的更改,它的颜色用于第一个cardview更改它的颜色并用于第二个cardview,依此类推
如果需要,请询问更多信息
感谢您的帮助。谢谢。我自己解决了:-
package com.danish.foveros.adapter;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.media.Image;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.danish.foveros.R;
import java.util.ArrayList;
import java.util.List;
public class MainColorPaletteAdapter extends RecyclerView.Adapter<MainColorPaletteAdapter.ViewHolder> {
List<MainColorPaletteGetSet> mItems;
String[] colorName;
int[] colorThumbnail;
int[] allMaterialColor900;
int[] colorNameBackgroundColor;
public MainColorPaletteAdapter() {
super();
mItems = new ArrayList<MainColorPaletteGetSet>();
MainColorPaletteGetSet color;
colorNameBackgroundColor = new int[]{
R.color.md_red_900,
R.color.md_pink_900,
R.color.md_purple_900,
R.color.md_deep_purple_900,
R.color.md_indigo_900,
R.color.md_blue_900,
R.color.md_light_blue_900,
R.color.md_cyan_900,
R.color.md_teal_900,
R.color.md_green_900,
R.color.md_light_green_900,
R.color.md_lime_900,
R.color.md_yellow_900,
R.color.md_amber_900,
R.color.md_orange_900,
R.color.md_deep_orange_900,
R.color.md_brown_900,
R.color.md_grey_900,
R.color.md_blue_grey_900
};
colorName = new String[]{
"Red",
"Pink",
"Purple",
"Deep Purple",
"Indigo",
"Blue",
"Light Blue",
"Cyan",
"Teal",
"Green",
"Light Green",
"Lime",
"Yellow",
"Amber",
"Orange",
"Deep Orange",
"Brown",
"Grey",
"Blue Grey"
};
colorThumbnail = new int[]{
R.color.md_red_500,
R.color.md_pink_500,
R.color.md_purple_500,
R.color.md_deep_purple_500,
R.color.md_indigo_500,
R.color.md_blue_500,
R.color.md_light_blue_500,
R.color.md_cyan_500,
R.color.md_teal_500,
R.color.md_green_500,
R.color.md_light_green_500,
R.color.md_lime_500,
R.color.md_yellow_500,
R.color.md_amber_500,
R.color.md_orange_500,
R.color.md_deep_orange_500,
R.color.md_brown_500,
R.color.md_grey_500,
R.color.md_blue_grey_500
};
for (int i = 0; i < colorName.length; i++) {
color = new MainColorPaletteGetSet();
color.setColorName(colorName[i]);
color.setColorThumbnail(colorThumbnail[i]);
color.setColorNameBackgroundColor(colorNameBackgroundColor[i]);
mItems.add(color);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View v = LayoutInflater
.from(viewGroup.getContext())
.inflate(R.layout.fragment_home_data, viewGroup, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
MainColorPaletteGetSet color = mItems.get(position);
holder.colorThumbnailView.setBackgroundResource(color.getColorThumbnail());
holder.colorNameView.setText(color.getColorName());
holder.colorNameView.setBackgroundResource(color.getColorNameBackgroundColor());
}
@Override
public int getItemCount() {
return mItems.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public ImageView colorThumbnailView;
public TextView colorNameView;
public ViewHolder(final View itemView) {
super(itemView);
colorThumbnailView = (ImageView) itemView.findViewById(R.id.colorThumbnail);
colorNameView = (TextView) itemView.findViewById(R.id.colorName);
}
}
}
package com.danish.foveros.adapter;
导入android.content.Context;
导入android.graphics.drawable.drawable;
导入android.media.Image;
导入android.support.v7.widget.CardView;
导入android.support.v7.widget.RecyclerView;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ImageView;
导入android.widget.TextView;
导入android.widget.Toast;
import com.danish.foveros.R;
导入java.util.ArrayList;
导入java.util.List;
公共类MainColorPaletteAdapter扩展了RecyclerView.Adapter{
列出螨类;
字符串[]颜色名称;
int[]彩色缩略图;
int[]所有材料颜色900;
int[]colorname背景色;
公共主颜色调色板适配器(){
超级();
mItems=新的ArrayList();
主颜色调色板设置颜色;
colorNameBackgroundColor=new int[]{
R.color.md_red_900,
R.color.md_pink_900,
R.color.md_紫色_900,
R.color.md_深紫色_900,
R.color.md_靛蓝_900,
R.color.md_蓝色_900,
R.color.md_浅蓝色_900,
R.color.md_青色_900,
R.color.md_teal_900,
R.color.md_绿色_900,
R.color.md_浅绿色_900,
R.color.md_lime_900,
R.color.md_黄色_900,
R.color.md_琥珀色_900,
R.color.md_橙色_900,
R.color.md_深橙色_900,
R.color.md_brown_900,
R.color.md_灰_900,
R.color.md_蓝色_灰色_900
};
colorName=新字符串[]{
“红色”,
“粉红”,
“紫色”,
“深紫色”,
“靛蓝”,
“蓝色”,
“浅蓝色”,
“青色”,
“水鸭”,
“绿色”,
“浅绿色”,
“石灰”,
“黄色”,
“琥珀”,
“橙色”,
“深橙色”,
“棕色”,
“灰色”,
“蓝灰色”
};
colorThumbnail=newint[]{
R.color.md_red_500,
package com.danish.foveros.adapter;
import android.graphics.drawable.Drawable;
import android.media.Image;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.danish.foveros.R;
import java.util.ArrayList;
import java.util.List;
public class MainColorPaletteAdapter extends RecyclerView.Adapter<MainColorPaletteAdapter.ViewHolder> {
List<MainColorPaletteGetSet> mItems;
String[] colorName;
int[] colorThumbnail;
int[] allMaterialColor900;
int[] colorNameBackgroundColor;
public MainColorPaletteAdapter() {
super();
mItems = new ArrayList<MainColorPaletteGetSet>();
MainColorPaletteGetSet color;
colorName = new String[]{"Amber", "Brown", "Cyan", "Teal"};
colorThumbnail = new int[]{R.drawable.amber, R.drawable.brown,
R.drawable.cyan, R.drawable.teal};
colorNameBackgroundColor = new int[]{R.color.md_amber_900, R.color.md_brown_900,
R.color.md_cyan_900, R.color.md_teal_900};
for (int i = 0; i < colorName.length; i++) {
color = new MainColorPaletteGetSet();
color.setColorName(colorName[i]);
color.setColorThumbnail(colorThumbnail[i]);
color.setColorNameBackgroundColor(colorNameBackgroundColor[i]);
mItems.add(color);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View v = LayoutInflater
.from(viewGroup.getContext())
.inflate(R.layout.fragment_home_data, viewGroup, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
MainColorPaletteGetSet color = mItems.get(position);
holder.colorThumbnail.setImageResource(color.getColorThumbnail());
holder.colorName.setText(color.getColorName());
holder.colorName.setBackgroundColor(color.getColorNameBackgroundColor());
}
@Override
public int getItemCount() {
return mItems.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public ImageView colorThumbnail;
public TextView colorName;
public ViewHolder(View itemView) {
super(itemView);
colorThumbnail = (ImageView) itemView.findViewById(R.id.colorThumbnail);
colorName = (TextView) itemView.findViewById(R.id.colorName);
}
}
}
package com.danish.foveros.adapter;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.media.Image;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.danish.foveros.R;
import java.util.ArrayList;
import java.util.List;
public class MainColorPaletteAdapter extends RecyclerView.Adapter<MainColorPaletteAdapter.ViewHolder> {
List<MainColorPaletteGetSet> mItems;
String[] colorName;
int[] colorThumbnail;
int[] allMaterialColor900;
int[] colorNameBackgroundColor;
public MainColorPaletteAdapter() {
super();
mItems = new ArrayList<MainColorPaletteGetSet>();
MainColorPaletteGetSet color;
colorNameBackgroundColor = new int[]{
R.color.md_red_900,
R.color.md_pink_900,
R.color.md_purple_900,
R.color.md_deep_purple_900,
R.color.md_indigo_900,
R.color.md_blue_900,
R.color.md_light_blue_900,
R.color.md_cyan_900,
R.color.md_teal_900,
R.color.md_green_900,
R.color.md_light_green_900,
R.color.md_lime_900,
R.color.md_yellow_900,
R.color.md_amber_900,
R.color.md_orange_900,
R.color.md_deep_orange_900,
R.color.md_brown_900,
R.color.md_grey_900,
R.color.md_blue_grey_900
};
colorName = new String[]{
"Red",
"Pink",
"Purple",
"Deep Purple",
"Indigo",
"Blue",
"Light Blue",
"Cyan",
"Teal",
"Green",
"Light Green",
"Lime",
"Yellow",
"Amber",
"Orange",
"Deep Orange",
"Brown",
"Grey",
"Blue Grey"
};
colorThumbnail = new int[]{
R.color.md_red_500,
R.color.md_pink_500,
R.color.md_purple_500,
R.color.md_deep_purple_500,
R.color.md_indigo_500,
R.color.md_blue_500,
R.color.md_light_blue_500,
R.color.md_cyan_500,
R.color.md_teal_500,
R.color.md_green_500,
R.color.md_light_green_500,
R.color.md_lime_500,
R.color.md_yellow_500,
R.color.md_amber_500,
R.color.md_orange_500,
R.color.md_deep_orange_500,
R.color.md_brown_500,
R.color.md_grey_500,
R.color.md_blue_grey_500
};
for (int i = 0; i < colorName.length; i++) {
color = new MainColorPaletteGetSet();
color.setColorName(colorName[i]);
color.setColorThumbnail(colorThumbnail[i]);
color.setColorNameBackgroundColor(colorNameBackgroundColor[i]);
mItems.add(color);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View v = LayoutInflater
.from(viewGroup.getContext())
.inflate(R.layout.fragment_home_data, viewGroup, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
MainColorPaletteGetSet color = mItems.get(position);
holder.colorThumbnailView.setBackgroundResource(color.getColorThumbnail());
holder.colorNameView.setText(color.getColorName());
holder.colorNameView.setBackgroundResource(color.getColorNameBackgroundColor());
}
@Override
public int getItemCount() {
return mItems.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public ImageView colorThumbnailView;
public TextView colorNameView;
public ViewHolder(final View itemView) {
super(itemView);
colorThumbnailView = (ImageView) itemView.findViewById(R.id.colorThumbnail);
colorNameView = (TextView) itemView.findViewById(R.id.colorName);
}
}
}