触摸时更改自定义视图的背景
我想在按下时更改自定义视图的背景颜色,并在视图丢失“按下状态”时稍微“移除”此背景颜色。然而,我GOOGLE了这个问题,并找到了一个使用StateListDrawable的解决方案。我已经在我的customView(它以编程方式添加到ListView)中试过这个,但只是“正常颜色”被设置为我的视图。当我触摸视图时,什么都没有发生。出了什么问题?触摸时更改自定义视图的背景
选择XML文件:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@color/bckgr" />
<item
android:drawable="@color/transparent" />
</selector>
我的自定义视图的构造函数中:
this.setBackgroundResource(R.drawable.list_item_bckgr);
你必须申请你background
到View
的Adapter
填满(视图您getView
执行正在返回)不到ListView
自我
嘿你做在构造函数中视图focussable和点击,使用:
setClickable(true);
setFocusable(true);
可能是你的观点并没有得到焦点。
您需要设置OnTouchListener
来处理触摸事件。触摸视图时,更改背景,并且当视图“未触摸”时,将背景更改回原始视图。
要设置侦听器,请使用您创建的OnTouchListener调用自定义视图的View.setOnTouchListener()函数来处理这些事件。
下面是引用OnTouchListener:
http://developer.android.com/reference/android/view/View.OnTouchListener.html
我假设你有一个覆盖方法的OnTouch()
方法,我会做的就是创建一个instance variable
(类VAR),将持有的图像您希望将其作为背景,并将其设置为您的OnTouch()
方法。然后,覆盖您的OnDraw()
方法,该方法将为您提供canvas
的参考,并使用canvas.DrawBitmap()
绘制背景。
这个答案告诉您如何绘制bitmap
Setting background image in a custom view
这工作得很好:) THX – user2224350 2013-04-21 08:59:18
高兴,这有助于更多的细节:) – 2013-04-21 15:55:09