根据当前状态绘制自定义视图

时间:2013-10-28 20:12:22

标签: android view drawing

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

创建一个处理该文件并将其放入drawable文件夹的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));