我希望在按下时更改customView的背景颜色,并在视图丢失“按下状态”时稍微“移除”此背景颜色。但是,我搜索了这个问题并找到了一个使用StateListDrawable的解决方案。我在我的customView(以编程方式添加到ListView)中尝试了这个,但只是将“正常颜色”设置为我的视图。当我触摸视图时没有任何反应。出了什么问题?
选择器xml-file:
<?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);
答案 0 :(得分:0)
您必须将background
应用于View
Adapter
填充(您的getView
实施正在返回的视图),而不是ListView
我自己
答案 1 :(得分:0)
尝试在ListView
上将android:descendantFocusability
设为真。
答案 2 :(得分:0)
嘿,你是否使视图具有可聚焦性和可点击性,请在构造函数中使用:
setClickable(true);
setFocusable(true);
可能是你的观点没有得到关注。
答案 3 :(得分:0)
您需要设置OnTouchListener
来处理触摸事件。触摸视图时,更改背景,当视图“未触动”时,将背景更改回原始视图。
要设置侦听器,请使用您创建的OnTouchListener调用自定义视图的View.setOnTouchListener()函数来处理这些事件。
以下是对OnTouchListener的引用:
http://developer.android.com/reference/android/view/View.OnTouchListener.html
答案 4 :(得分:0)
我想你有OnTouch()
方法的覆盖方法,我要做的是创建一个instance variable
(类var)来保存你想要作为背景的图像,并在OnTouch()
方法中设置它。然后,覆盖您的OnDraw()
方法,该方法会为您提供canvas
的引用,并使用canvas.DrawBitmap()
绘制您的背景。
此答案显示了有关如何绘制bitmap
的更多详细信息
Setting background image in a custom view