可点击的 ImageView 和 ImageButton 之间的区别

发布于 2024-11-04 11:46:20 字数 275 浏览 0 评论 0原文

我只是想知道设置为可点击的 ImageViewImageButton 相比是否有任何显着差异?

有什么理由使用其中一种而不是另一种吗?对于 ImageButton 的可绘制对象是否有任何限制,使 ImageView 成为唯一可能的选项?

如果我选择可点击的 ImageView 而不是 ImageButton,我是否可能会失去按钮的任何功能?

I'm just wondering if there is any significant difference between an ImageView that's set to be clickable, compared with an ImageButton?

Is there any reason for using one over the other? Is there any restriction on the drawable for an ImageButton that leaves ImageView as the only possible option?

Will I possibly lose any functionality of a button if I opt for a clickable ImageView over ImageButton?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

终难愈 2024-11-11 11:46:20

除了默认样式外,没有任何区别。 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>

There are no differences, except default style. ImageButton has a non-null background by default.

EDIT: Also, ImageButton.onSetAlpha() method always returns false, scaleType is set to center and it's always inflated as focusable.

Here's ImageButton's default style:

 <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>
思念绕指尖 2024-11-11 11:46:20

ImageButton 是从 ImageView 继承的,

public class ImageButton extends ImageView {
public ImageButton(Context context) {
    this(context, null);
}

public ImageButton(Context context, AttributeSet attrs) {
    this(context, attrs, com.android.internal.R.attr.imageButtonStyle);
}

public ImageButton(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    setFocusable(true);
}

@Override
protected boolean onSetAlpha(int alpha) {
    return false;
}

@Override
public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
    super.onInitializeAccessibilityEvent(event);
    event.setClassName(ImageButton.class.getName());
}

@Override
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
    super.onInitializeAccessibilityNodeInfo(info);
    info.setClassName(ImageButton.class.getName());
}

正如 @Micheal 所描述的,我只是在他的答案中添加了详细信息

ImageButton is inherited from ImageView

public class ImageButton extends ImageView {
public ImageButton(Context context) {
    this(context, null);
}

public ImageButton(Context context, AttributeSet attrs) {
    this(context, attrs, com.android.internal.R.attr.imageButtonStyle);
}

public ImageButton(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    setFocusable(true);
}

@Override
protected boolean onSetAlpha(int alpha) {
    return false;
}

@Override
public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
    super.onInitializeAccessibilityEvent(event);
    event.setClassName(ImageButton.class.getName());
}

@Override
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
    super.onInitializeAccessibilityNodeInfo(info);
    info.setClassName(ImageButton.class.getName());
}

as @Micheal describe i just add details to his answer

带上头具痛哭 2024-11-11 11:46:20

单击按钮时的效果对于 imagebutton 有,但对于 imageView 没有。

The effect of a button click when I click is there for imagebutton but not for imageView.

自此以后,行同陌路 2024-11-11 11:46:20

如果需要,您可以将按钮 CLIC 效果作为背景。 ImageButton默认有效果。

If you want, you can give the button clic effect as a background. ImageButton has an effect by default.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文