【问题标题】:Android imagebutton does not flash on clickAndroid imagebutton在点击时不闪烁
【发布时间】:2011-04-28 09:47:55
【问题描述】:

我已经实现了一个 ImageButton。一切都很好,除了当我按下它时,它在继续(到另一个活动)之前不会“闪烁”。 Android 是否有 ImageButton 的内在“闪光”,或者我必须在 onClickEvent 中明确地编写/动画?还是使用选择器?

提前感谢您的所有帮助。

【问题讨论】:

  • 你在“flash”下是什么意思?按钮可能有三种状态:正常、聚焦和按下。你是说按下状态吗?
  • @Anton - 现在 ImageButton 不显示它是否被按下然后释放或任何东西。我只想给用户一个视觉反馈,比如在继续之前以绿色闪烁背景(图像按钮有一个透明背景开始)两次。

标签: android


【解决方案1】:

如果您让 ImageButton 保持其背景并且不将其设置为 null,它会像普通按钮一样在单击时闪烁,就像其他按钮一样。在背景仍然存在时隐藏背景的方法:

<ImageButton
    android:id="@+id/imageButton2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingBottom="1dp"
    android:paddingLeft="1dp"
    android:paddingRight="1dp"
    android:paddingTop="1dp"
    android:src="@drawable/squareicon" />

填充不会让背景可见并使按钮的行为与其他按钮一样。

【讨论】:

    【解决方案2】:

    如果您有一张普通按钮的图像和一张按下状态的图像,您应该使用选择器。我认为这是最简单的方法。

        <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android"
        android:constantSize=["true" | "false"]
        android:dither=["true" | "false"]
        android:variablePadding=["true" | "false"] >
        <item
            android:drawable="@[package:]drawable/drawable_resource"
            android:state_pressed=["true" | "false"]
            android:state_focused=["true" | "false"]
            android:state_selected=["true" | "false"]
            android:state_checkable=["true" | "false"]
            android:state_checked=["true" | "false"]
            android:state_enabled=["true" | "false"]
            android:state_window_focused=["true" | "false"] />
    </selector>
    

    【讨论】:

    • 我在不同状态下的 ImageButton 没有不同的图像。我想要的只是一个视觉提示,向用户显示他按下了按钮(IB 背景的一闪或两次)然后继续前进。
    • 我认为你可以简单地在选择器中设置颜色:
    • 谢谢。我以后得试试。现在打包旅行......我想选择器是要走的路。
    【解决方案3】:

    最终以编程方式进行,因为我在使用“选择器”时也遇到了问题,Eclipse 抱怨“无法解析文件”。

    public void flashBtn (final ImageButton myBtnToFlash){
        myBtnToFlash.setBackgroundResource(R.drawable.glossy_button_green_rectangle);
        Handler handler = new Handler(); 
        handler.postDelayed(new Runnable() { 
             public void run() { 
                 myBtnToFlash.setBackgroundResource(0);
             } 
        }, 50);
    
    }
    

    【讨论】:

    • 你有其他 UI 元素的通用解决方案吗?
    【解决方案4】:
    【解决方案5】:

    对于 ImageButtons,您不应该设置它的背景。将图片设置为“src”,那么ImageButton仍将具有默认的闪烁属性。

    在这里,我猜,您正在为 ImageButton 设置背景,我想这不是必需的。

    【讨论】:

    • 为图片设置 src 会导致图片周围显示灰色按钮背景
    • 是的,这是意料之中的。如果您不想看到灰色背景,可以将背景设置为空/透明。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 2021-10-11
    • 2014-08-18
    • 1970-01-01
    相关资源
    最近更新 更多