在列表视图中获取选定行的背景颜色
Get background color of selected row in listview
我必须以编程方式获取列表视图中所选行的背景颜色。
我写这个是为了给行着色:
View v;
v.setBackgroundColor(context.getResources().getColor(R.color.childArticle));
但我不知道如何获取行的颜色,因为我必须这样做:
colorOfSelectedRow = v.getBackgroundColor();
if(colorOfSelectedRow == MY_COLOR) {
// Do something
}
谢谢!
编辑:
我想知道按下行的颜色,但并非所有行都用相同的颜色着色!
您可以在标签中设置背景颜色 ID,如下所示,还可以获取 color.xml
中提到的颜色 ID
首先将颜色代码id设置到标签中。
view.setTag(R.color.childArticle);
然后当你想获取背景颜色时,从视图中获取标签并解析其值并从 color.xml 文件中获取颜色代码。
int ColorId = Integer.parseInt(view.getTag().toString());
这段代码将输出点击行的颜色字符串,如果没有设置颜色背景,则不输出任何内容。但是你没有具体说明你是如何设置背景颜色的。
ListView listView = (ListView) findViewById(R.id.listView);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
adapter.add("Blue");
adapter.add("None");
adapter.add("Red");
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
int color;
Drawable background = view.getBackground();
if (background instanceof ColorDrawable) {
color = ((ColorDrawable) background).getColor();
Log.d("MainActivity", Integer.toHexString(color));
}
}
});
listView.setAdapter(adapter);
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listView.getChildAt(0).setBackgroundColor(ContextCompat.getColor(MainActivity.this, android.R.color.holo_blue_dark));
listView.getChildAt(2).setBackgroundColor(ContextCompat.getColor(MainActivity.this, android.R.color.holo_red_dark));
}
});
final int MY_COLOR = R.color.childArticle;
View v;
v.setBackgroundColor(context.getResources()
.getColor(R.color.childArticle));
view.setTag(R.color.childArticle);
Integer colorOfSelectedRow = (Integer) v.getTag();
if(colorOfSelectedRow == MY_COLOR) {
// Do something
}
用这个..
我必须以编程方式获取列表视图中所选行的背景颜色。 我写这个是为了给行着色:
View v;
v.setBackgroundColor(context.getResources().getColor(R.color.childArticle));
但我不知道如何获取行的颜色,因为我必须这样做:
colorOfSelectedRow = v.getBackgroundColor();
if(colorOfSelectedRow == MY_COLOR) {
// Do something
}
谢谢!
编辑: 我想知道按下行的颜色,但并非所有行都用相同的颜色着色!
您可以在标签中设置背景颜色 ID,如下所示,还可以获取 color.xml
中提到的颜色 ID首先将颜色代码id设置到标签中。
view.setTag(R.color.childArticle);
然后当你想获取背景颜色时,从视图中获取标签并解析其值并从 color.xml 文件中获取颜色代码。
int ColorId = Integer.parseInt(view.getTag().toString());
这段代码将输出点击行的颜色字符串,如果没有设置颜色背景,则不输出任何内容。但是你没有具体说明你是如何设置背景颜色的。
ListView listView = (ListView) findViewById(R.id.listView);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
adapter.add("Blue");
adapter.add("None");
adapter.add("Red");
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
int color;
Drawable background = view.getBackground();
if (background instanceof ColorDrawable) {
color = ((ColorDrawable) background).getColor();
Log.d("MainActivity", Integer.toHexString(color));
}
}
});
listView.setAdapter(adapter);
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listView.getChildAt(0).setBackgroundColor(ContextCompat.getColor(MainActivity.this, android.R.color.holo_blue_dark));
listView.getChildAt(2).setBackgroundColor(ContextCompat.getColor(MainActivity.this, android.R.color.holo_red_dark));
}
});
final int MY_COLOR = R.color.childArticle;
View v;
v.setBackgroundColor(context.getResources()
.getColor(R.color.childArticle));
view.setTag(R.color.childArticle);
Integer colorOfSelectedRow = (Integer) v.getTag();
if(colorOfSelectedRow == MY_COLOR) {
// Do something
}
用这个..