【问题标题】:Android Button weird behavior when tapping fast on Android version 2.3.x在 Android 版本 2.3.x 上快速点击时 Android Button 的奇怪行为
【发布时间】:2013-09-29 11:38:57
【问题描述】:

按钮对快速点击做出奇怪的反应(点击只应该更改按钮内的文本):它会调整大小,变大,即使文本非常小。

如果我点击它,并停留半秒,然后移开手指,则 minWidth 属性受到尊重。

我可以通过“长按”恢复原始大小,并通过“短按”放大。每次都有效。

我无法在 4.0+ 上重现此问题(但我没有尝试过),并且似乎总是在 2.3.X 设备上发生(我在 HTC Desire S 和 2.3.5 和 Galaxy S2 上尝试过) 2.3.6)。

以下是该按钮相关的xml代码:

    <Button
    android:id="@+id/header_left_button"
    android:layout_width="wrap_content"
    android:layout_height="@dimen/very_small_item_height"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:layout_marginLeft="10dip"
    android:background="@drawable/btn_nav_background"
    android:minWidth="70dip"
    android:paddingLeft="5dip"
    android:paddingRight="5dip"
    android:textColor="#FFFFFF"
    android:textSize="9sp"
    android:visibility="gone" />

还有 OnClick 监听器:

mBtnTextHeaderLeft.setOnClickListener(new OnClickListener() {

  @Override
  public void onClick(View v) {
        mBtnTextHeaderLeft.setText("OK");
});

有什么想法吗?

编辑:

选择器是这样定义的:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/btn_map_bottom_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/btn_map_bottom_normal" android:state_enabled="true"/>
</selector>

编辑 2: 以下是按钮两种状态的截图(抱歉我没有足够的声望直接添加图片...):

normal size(当按钮还没有被点击时,或者如果我“慢慢地”点击它)

bugged size(“快速”点击按钮时)

【问题讨论】:

  • 可见性设置为消失。它将不可见。
  • 我应该提到按钮在 OnCreate() 上可见。当用户点击它时它是可见的。
  • 另外请注意,如果我删除android:background="@drawable/btn_nav_background",它是多个 9 补丁之间的选择器,按钮不会调整大小。
  • 选择状态资源有哪些?
  • @HannahMitt 查看编辑 :)

标签: android android-layout android-button


【解决方案1】:

尝试为你的情况使用锁

ReentrantLock lock = new ReentrantLock();
mBtnTextHeaderLeft.setOnClickListener(new OnClickListener() {

  @Override
  public void onClick(View v) {
        if (lock.tryLock()) {
            try {
         mBtnTextHeaderLeft.setText("OK");

       } catch (Exception e) {
            } finally {

                lock.unlock();
            }
});

【讨论】:

  • 感谢您的回答,但不幸的是它不起作用。行为仍然完全相同。
  • 您能否为您的问题添加屏幕截图并使用具体描述扩展问题。
  • 您应该验证选择器并验证drawable drawable="@drawable/btn_map_bottom_normal 和另一个它应该具有相同的宽度和高度
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
  • 2012-03-17
  • 2019-03-17
  • 1970-01-01
  • 2014-09-20
  • 1970-01-01
相关资源
最近更新 更多