在TextView中是否有这样的方法调用“getBackgroundColor”? 如果我在一个LinearLayout中有2个textViews:tv1和tv2。我做了什么:tv1.setBackgroundColor(Color.BLUE)
现在,如果我想将tv2的setBackgroundColor与tv1相同,我怎样才能首先获取tv1中的backgroundColor 然后再获取tv2的setBackgroundColor?
答案 0 :(得分:36)
有比波旁士更好的解决方案:
((ColorDrawable)view.getBackground()).getColor();
优点是我们得到的整数与Color class给出的颜色枚举相当。
答案 1 :(得分:13)
设置背景颜色会将具有指定颜色的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());
}
答案 2 :(得分:11)
你会在这里找到解决方案: http://groups.google.com/group/android-developers/browse_thread/thread/4910bae94510ef77/59d4bb35e811e396?pli=1
会是这样的:
((PaintDrawable) tv.getBackground()).getPaint()
答案 3 :(得分:4)
没有这样的方法,因为共同现在有“背景颜色” - 可以有任何Drawable
对象(例如图片)。所以,你应该记住你为文本设置的颜色。
如果您无法保存,请使用View.setTag()
和View.getTag()
方法存储与视图相关联的任何值。
答案 4 :(得分:0)
这是一个额外的选项:
我为我的应用解决了这个问题的方法是在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
获取颜色。
答案 5 :(得分:0)
它对我有用。
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;
}