如何保存textview默认背景颜色以便以后应用?

时间:2017-03-19 12:50:38

标签: android android-studio

我只需要在每次触摸时更改(切换)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背景颜色

    或者

  • 第一次触摸文本视图时保存背景颜色 然后使用保存的颜色重置背景。

谢谢

2 个答案:

答案 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!