Listview 为按钮扩展可触摸区域的正确方法-触摸代理与自定义按钮

Listview 为按钮扩展可触摸区域的正确方法-触摸代理与自定义按钮,listview,touchdelegate,android,imagebutton,Listview,Touchdelegate,Android,Imagebutton,用什么方法(或者可能是最方便的方法)来扩展按钮的可触摸区域 当我第一次在GoogleDrive应用程序中看到这样的扩展区域时,我认为这是使用自定义按钮完成的 我能够很容易地复制这种效果 我使用了简单的可绘制: <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true"> <shap

用什么方法(或者可能是最方便的方法)来扩展按钮的可触摸区域

当我第一次在GoogleDrive应用程序中看到这样的扩展区域时,我认为这是使用自定义按钮完成的

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

我使用了简单的可绘制:

<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>


刚才我遇到了一个问题,但对于这么简单的任务来说,这似乎是一个过于复杂的方法。使用TouchDelegories有什么好处吗?还是只是个人喜好的问题?

将按钮置于透明的相对布局或线性布局中。使您的按钮
android:clickable=false
和布局
android:clickable=true
。因此,当您点击按钮时,布局将捕获单击侦听器。现在,您可以将布局的可绘制部分应用为选择器xml。您不需要形状,只需使用颜色并在按下状态或聚焦状态或诸如此类的情况下进行更改。

TouchDelegate是一种扩展
视图的触摸区域的方法(超出其当前边界),以便用户更容易操作该小部件(例如,扩大那颗非常小的星星的触摸区域是有意义的)


在您发布的图像中,您有一个简单的
按钮
,对于该按钮,
触摸代理
没有意义,因为它足够大,用户可以根据它进行操作。

您混淆了这两个概念。
触摸代理
应该将视图的触摸区域扩展到该视图的当前区域之外(为了让用户更容易点击它,而不是让它看起来更大)。有了它,你只需要一个普通的大按钮。@Luksprog是的,你是对的。我在这个特殊的例子中没有看到这一点,因为我没有让它看起来更大。无论如何,谢谢你,我会接受它作为一个答案!