0

我想在按下时更改 customView 的背景颜色,并在视图失去“按下状态”时稍微“删除”此背景颜色。但是,我用谷歌搜索了这个问题并找到了使用 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);
4

5 回答 5

0

你必须将你的应用background到填充(你的 实现正在返回的视图)而不是自我ViewAdaptergetViewListView

于 2013-04-21T08:47:41.283 回答
0

尝试android:descendantFocusabilityListView.

于 2013-04-21T08:48:18.210 回答
0

嘿,您是否使视图可聚焦和可点击,在构造函数中使用:

setClickable(true);
setFocusable(true);

可能是你的观点没有得到关注。

于 2013-04-21T08:49:40.860 回答
0

您需要设置OnTouchListener来处理触摸事件。当视图被触摸时,更改背景,当视图“未触摸”时,将背景更改回原来的。

要设置侦听器,请使用您创建的 OnTouchListener 调用自定义视图的 View.setOnTouchListener() 函数来处理这些事件。

这是对 OnTouchListener 的引用:

http://developer.android.com/reference/android/view/View.OnTouchListener.html

于 2013-04-21T08:51:14.443 回答
0

我想您对该方法有一个覆盖方法OnTouch(),我要做的是创建一个instance variable(类 var)来保存您想要作为背景的图像,并将其设置在您的OnTouch()方法中。然后,覆盖您的OnDraw()方法,该方法将为您提供对 的引用canvas,并使用canvas.DrawBitmap()来绘制您的背景。

此答案向您展示了有关如何bitmap 在自定义视图中绘制设置背景图像的更多详细信息

于 2014-03-15T03:12:05.790 回答