我只需要在每次触摸时更改(切换)textview
的背景颜色。
因此,当用户首次触摸textview时,它会变为蓝色。在下一次触摸时,它将返回到textview的默认 主题颜色。到目前为止,我还没有在任何XML文件中指定任何颜色。
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/list_item_name"
android:onClick="ToggleListItemSelectedState"/>
在文本框的点击处理程序中:
TextView selectedTextView = (TextView)view;
defaultBackground=//?How to save the default background
从这个stackoverflow回答,我试过了 defaultBackground = selectedTextView.getBackground(); int colorCode = defaultBackground.getColor();
但无法识别getColor()
。
我需要
从主题中获取默认的textview背景颜色
或者
第一次触摸文本视图时保存背景颜色 然后使用保存的颜色重置背景。
谢谢
答案 0 :(得分:0)
尝试
mBackgroundColor = ((ColorDrawable) view.getBackground()).getColor();
view.setBackgroundColor(mBackgroundColor);
答案 1 :(得分:0)
您可以使用View#getBackground()
检索视图的当前背景。如果您未设置任何背景,则会返回null
。
如果您定位的API低于16,则可以View#setBackground(Drawable)
或ViewCompat#setBackground(View, Drawable)
设置视图的背景。
因此,您可能希望存储原始背景和所需背景:
mOriginalBackground = textView.getBackground();
mOtherBackground = new ColorDrawable(otherColor);
现在在他们之间切换:
if (showOriginalBackground) {
ViewCompat.setBackground(textView, mOriginalBackground);
} else {
ViewCompat.setBackground(textView, mOtherBackground);
}
showOriginalBackground = !showOriginalBackground;
此问题的答案之一建议使用View#setBackgroundColor(int)
。请注意,如果原始背景已经是ColorDrawable
,这将(在API 15及更高版本上)改变原始背景。因此:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/red" />
mOriginalBackground = textView.getBackground(); // red
textView.setBackgroundColor(blue); // mOriginalBackground is now blue!
ViewCompat.setBackground(textView, mOriginalBackground); // user still sees blue!