我想要做的只是根据状态,正常,聚焦或按下来改变视图的颜色。我不知道该怎么做,也许我应该在点击视图时调用onDraw
,跟踪状态?
答案 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));