有没有这样的方法调用“getBackgroundColor”?

有没有这样的方法在TextView中调用“getBackgroundColor”? 如果我在一个LinearLayout中有2个textViews:tv1和tv2。 我做了什么:tv1.setBackgroundColor(Color.BLUE)

现在,如果我想将tv2的setBackgroundColor设置为与tv1相同,那么如何才能获得 tv1中的backgroundColor ,然后再获取 tv2的setBackgroundColor?

Solutions Collecting From Web of "有没有这样的方法调用“getBackgroundColor”?"

您可以在这里find解决scheme: http : //groups.google.com/group/android-developers/browse_thread/thread/4910bae94510ef77/59d4bb35e811e396?pli = 1

这将是这样的:

((PaintDrawable) tv.getBackground()).getPaint() 

有比波旁更好的解决办法:

 ((ColorDrawable)view.getBackground()).getColor(); 

优点是我们得到一个与Color类给出的颜色枚举类似的整数。

设置一个背景颜色设置一个Drawable与指定的颜色作为背景,即下面的例子将工作得很好:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.some_layout_name); TextView t1 = (TextView) findViewById(R.id.text1); TextView t2 = (TextView) findViewById(R.id.text2); t1.setBackgroundColor(Color.GREEN); t2.setBackgroundDrawable(t1.getBackground()); } 

没有这样的方法,因为通常现在有“背景颜色” – 可以有任何Drawable对象(例如图片)。 所以,你应该记住你为文本设置了什么颜色。

如果你不能保存它 – 使用View.setTag()View.getTag()方法来存储与视图关联的任何值。

这是一个额外的select:

我为我的应用程序解决这个问题的方法是在values / color.xml中定义颜色。

 <resources> <color name="blue">#ff0099cc</color> <color name="dark_grey">#ff1d1d1d</color> <color name="white">#ffffffff</color> ... <color name="textview_background">@color/white</color> </resources> 

TextView的布局中:

 android:background="@color/textview_background" 

如果我想在代码中获得背景颜色,我可以使用:

 getResources().getColor(R.color.textview_background) 

这直接给我一个Color对象,而不用担心从Drawable获取颜色。

这个对我有用。

 public static int getColor(View v) { if(Build.VERSION.SDK_INT>=11) { return ((ColorDrawable)v.getBackground()).getColor(); } else { try { Field f=View.class.getDeclaredField("mState"); f.setAccessible(true); Object mState=f.get(v); Field f2=mState.getClass().getDeclaredField("mUseColor"); f2.setAccessible(true); return (int) f2.get(mState); } catch (Exception e) { } } return 0; }