Android,为啥要使用按钮视图,因为每个视图都可以有一个 onclicklistener

Posted

技术标签:

【中文标题】Android,为啥要使用按钮视图,因为每个视图都可以有一个 onclicklistener【英文标题】:Android, why ever use Button views, since every view can have an onclicklistenerAndroid,为什么要使用按钮视图,因为每个视图都可以有一个 onclicklistener 【发布时间】:2011-09-26 21:34:40 【问题描述】:

我很好奇,为什么我会使用 Button 或 ImageButton,当 TextViews、ImageViews 和其他所有东西都可以有 onclicklisteners 时,都可以有 src 和背景属性、状态以及 Button 或 ImageButton 提供的所有其他东西

我可能遗漏了什么,所以请说明是什么

【问题讨论】:

【参考方案1】:

没有区别,除了默认样式。 ImageButton 默认具有非空背景。

另外,ImageButton.onSetAlpha() 方法总是返回 false,scaleType 设置为 center 并且它总是膨胀为可聚焦的。

这是ImageButton的默认样式:

 <style name="Widget.ImageButton">
     <item name="android:focusable">true</item>
     <item name="android:clickable">true</item>
     <item name="android:scaleType">center</item>
     <item name="android:background">@android:drawable/btn_default</item>
 </style>

【讨论】:

【参考方案2】:

每个人都有不同的风格,就是这样。你可以创建一个简单的TextView,用户仍然可以点击它,你可以对这些点击做出反应……但TextView默认不提供任何视觉反馈。

实际上,Button 只是带​​有一组选择器可绘制对象的TextView

【讨论】:

以上是关于Android,为啥要使用按钮视图,因为每个视图都可以有一个 onclicklistener的主要内容,如果未能解决你的问题,请参考以下文章

为啥堆栈视图中的自定义视图重叠?

改变Android按钮背景颜色的高效方法

为啥要使用许多视图控制器来制作应用程序?

为啥将按钮添加为子视图时会出现内存泄漏?

更改recyclerview android的子视图颜色

如何在android中实现视图滑动