如何获得Android中的select颜色?

我需要获取Android使用的select颜色来绘制ListView和EditTextselect。 我知道这些控制用户select器绘制他们的状态,但我已经写了一些小部件,我想匹配他们正在运行的平台的select颜色,并定义的drawable不能这样做,因为他们正在使用9修补图像而不是颜色。

我已经查看所有通过Android源,并没有find一个颜色select器或颜色常量,我可以用来获得我正在寻找的颜色。

Solutions Collecting From Web of "如何获得Android中的select颜色?"

你可以试试这个:

android:background="?android:attr/selectableItemBackground" 

你可以从这里得到所有的资源

 android-sdk-windows\platforms\android-<Desire API Level>\data\res\drawable-hdpi. 

或者你可以直接使用这个

 android:background="@android:drawable/list_selector_background" 

或者也是这样

 Drawable d = getResources().getDrawable(android.R.drawable.list_selector_background); 

看看这个答案 。 您可以在Android github镜像中浏览平台颜色和样式 。 请注意,对于Android的每个版本,这个值可能不同。 如果你想使用平台样式,只是不要为控件创build自己的自定义select器。 希望它会有所帮助。

你可以得到list_selector_background drawable,就像Jignesh所说的那样,然后find它的平均颜色这个答案就是这样做的)(我会在你的初始化代码中做这个,所以你不必每次都浪费处理,但是嘿,这是过早的优化)。 这应该是足够一致的主题,让您的小部件匹配的需要。

你的代码可能是这样的:

 public static Color getPlatformSelectionColor(Context c) { Bitmap bitmap = BitmapFactory.decodeResource(c.getResources(), android.R.drawable.list_selector_background); long redBucket = 0; long greenBucket = 0; long blueBucket = 0; long pixelCount = 0; for (int y = 0; y < bitmap.getHeight(); y++) { for (int x = 0; x < bitmap.getWidth(); x++) { Color c = bitmap.getPixel(x, y); pixelCount++; redBucket += Color.red(c); greenBucket += Color.green(c); blueBucket += Color.blue(c); // does alpha matter? } } Color averageColor = Color.rgb(redBucket / pixelCount, greenBucket / pixelCount, blueBucket / pixelCount); return averageColor; } 

您可以轻松实现这一目标谷歌拥有的设备,但不为其他制造商,因为大多数制造商已经覆盖默认的颜色,布局,背景等几乎所有的Android版本,包括果冻豆。

所以理想情况下不推荐,也很难遵循每个人的devise准则。