我想做的只是根据视图的状态、正常、聚焦或按下来改变视图的颜色。我不知道该怎么做,也许我应该onDraw
在单击视图时简单地调用,保持状态跟踪?
问问题
690 次
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 回答