1

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

如果我点击它并保持半秒钟然后移开手指,则 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: 以下是按钮的两种状态的屏幕截图(对不起,我没有足够的声誉来直接添加图像......):

正常大小(当按钮尚未被点击时,或者如果我点击“缓慢”它)

错误大小(当“快速”点击按钮时)

4

1 回答 1

0

尝试为您的案例使用锁定

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();
            }
});
于 2013-09-24T13:22:22.793 回答