正确的方法来扩展按钮的可触摸区域 - TouchDelegate与自定义按钮

时间:2013-09-20 14:27:03

标签: android listview imagebutton

中展开按钮的可触摸区域的正确(或可能是最方便)方法是什么?

当我第一次在Google云端硬盘应用中看到这样的扩展区域时,我会使用自定义按钮完成。

enter image description here

我能够很容易地复制这种效果。

enter image description here

我使用简单的drawable:

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
        <item android:state_pressed="true">
        <shape>
            <solid android:color="#ff33B5E5" />            
        </shape>
    </item>
    <item>
        <shape>
            <solid android:color="#00000000" />
        </shape>
    </item>
</selector>

刚才我遇到了,但对于这么简单的任务来说,这似乎是一种过于复杂的方式。使用TouchDelegates是否有任何积极因素,还是仅仅是个人品味?

2 个答案:

答案 0 :(得分:1)

TouchDelegate是扩展View的触摸区域(在其当前边界之外)的一种方式,因此用户可以更轻松地对该窗口小部件进行操作(例如,它会有意义扩展那个非常小的恒星的触摸区域。

在您发布的图片中,您有一个简单的Button,其中TouchDelegate没有意义,因为它足以让用户采取行动。

答案 1 :(得分:0)

将您的按钮置于透明相对布局或线性布局中。设置按钮android:clickable= false和布局android:clickable= true。所以当你点击按钮时,布局将捕获点击监听器。现在您可以将布局的drawable应用为选择器xml。你不需要一个形状,只需使用颜色并在state_pressed或state_focused或类似的东西上更改它。