1

我想做的只是根据视图的状态、正常、聚焦或按下来改变视图的颜色。我不知道该怎么做,也许我应该onDraw在单击视图时简单地调用,保持状态跟踪?

4

2 回答 2

1

您需要存储视图的状态并简单地覆盖 onDraw() 方法以根据视图状态使用画布对象执行绘图。视图应该使自身无效,否则您可以在视图状态更改时调用 invalidate()。

于 2013-10-29T03:54:13.060 回答
0

制作一个处理该问题的 XML 文件并将其放在您的可绘制文件夹中。然后将视图的背景设置为此。这是一个例子

my_background_selector.xml

<!-- 
  Use Drawables
<item android:drawable="@drawable/gray_background" android:state_enabled="false"/>
<item android:drawable="@drawable/blue_background" android:state_pressed="true"/>
<item android:drawable="@drawable/red_background"  android:state_focused="true"/>
<item android:drawable="@drawable/blue_background"/> -->

<!--
OR Use Color attributes
<item android:drawable="@color/gray" android:state_enabled="false"/>
<item android:drawable="@color/dark_blue" android:state_pressed="true"/>
<item android:drawable="@color/red"  android:state_focused="true"/>
<item android:drawable="@color/blue"/> -->

然后将视图的背景设置为该文件,它将负责更改状态:

android:background="@drawable/my_background_selector"

或以编程方式

view.setBackground(mContext.getResources().getDrawable(R.drawable.my_background_selector));
于 2013-10-28T20:31:14.433 回答