获取布局的背景颜色

我想从我的代码中find布局的背景颜色。 有没有办法find它? 像linearLayout.getBackgroundColor()东西?

如果您的背景是纯色,则只能在API 11+中完成。

  int color = Color.TRANSPARENT; Drawable background = view.getBackground(); if (background instanceof ColorDrawable) color = ((ColorDrawable) background).getColor(); 

ColorDrawable.getColor()仅适用于11级以上的API级别,因此您可以使用此代码从API级别1支持它。在API级别11以下使用reflection。

 public static int getBackgroundColor(View view) { Drawable drawable = view.getBackground(); if (drawable instanceof ColorDrawable) { ColorDrawable colorDrawable = (ColorDrawable) drawable; if (Build.VERSION.SDK_INT >= 11) { return colorDrawable.getColor(); } try { Field field = colorDrawable.getClass().getDeclaredField("mState"); field.setAccessible(true); Object object = field.get(colorDrawable); field = object.getClass().getDeclaredField("mUseColor"); field.setAccessible(true); return field.getInt(object); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } return 0; } 

获取布局的背景颜色:

 LinearLayout lay = (LinearLayout) findViewById(R.id.lay1); ColorDrawable viewColor = (ColorDrawable) lay.getBackground(); int colorId = viewColor.getColor(); 

如果它是RelativeLayout,那么只需find它的id,并使用那里的对象,而不是LinearLayout。

最简单的方法是:

 view.getSolidColor();