0

我有 ListView,我想将当前活动的行更改为不同的颜色。

目前我有这个:

rowView.setBackgroundColor( 0xFF0000FF ); // make blue bg

它按预期工作。

然而,有一个“哲学”问题——因为我使用所有默认配色方案,我应该使用什么颜色?蓝色是不好的例子,因为 android 方案可能是深色或浅色或完全自定义。

我想到的东西可能是反色,看起来相似的颜色(比如暗 20%)或者可能是相同的颜色,但有一些效果。

必须在 Android 2.2+ 上运行

编辑:

我正在寻找的解决方案更像是这样的:

int x = this.getResources().getColor(android.R.color.holo_blue_bright);
listViewItem.setBackgroundColor(x);
4

2 回答 2

1

如果你知道这是一种颜色,那么你可以试试

    ColorDrawable buttonColor = (ColorDrawable) button.getBackground();

如果您使用的是 Android 3.0+,您可以获取颜色的资源 ID。

    int colorId = buttonColor.getColor();

然后,执行以下操作:

    int red = Color.red(colorId);
    int blue = Color.blue(colorId);
    int green = Color.green(colorId);
    double percent = 400;
    button.setBackgroundColor(Color.rgb((int)(red * percent/100),
        (int)(blue * percent/100),(int)(green * percent/100)));

请注意,使颜色较高会使颜色变亮,而较低的数字会使颜色变暗。

于 2013-07-19T18:04:16.807 回答
0

如果您想要一个函数来计算更暗或更亮的颜色,请参阅Brighter/Darker function。在 javascript 中,但很容易翻译成 java

于 2013-07-19T15:15:55.600 回答