Android:如何通过编程将视图的longclickable设置为true,同时保持其clickable为false?

Android:如何通过编程将视图的longclickable设置为true,同时保持其clickable为false?,android,clickable,onlongclicklistener,Android,Clickable,Onlongclicklistener,我有一个视图,最初在xml中是这样开始的: <ImageButton android:layout_width="64dp" android:layout_height="64dp" android:id="@+id/likeBtn" android:src="@drawable/like" android:onClick="like" andro

我有一个视图,最初在xml中是这样开始的:

<ImageButton
            android:layout_width="64dp"
            android:layout_height="64dp"
            android:id="@+id/likeBtn"
            android:src="@drawable/like"
            android:onClick="like"
            android:longClickable="true"
            android:clickable="true" />
我的问题是:

当我运行这样的代码时

likeBtn.setClickable(false);
likeBtn.setLongClickable(false);  

/* some other code here */

likeBtn.setLongClickable(true);
我发现视图也可以点击

我需要它在一段时间内只可长点击,不可点击,因为我会在代码中的几行之后再次启用这两个选项

注意事项:

  • 禁用两者并再次启用两者都可以正常工作
  • 禁用LongClick only并再次启用它可以正常工作
  • 我唯一的问题是,当longClickable为true时,将clickable设置为false似乎无效
只需按如下方式设置onlongclicklistener:

likeBtn.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                showExtraLike(v);
                return true;
            }
        });
likeBtn.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                  //do something
                  return true;
            }
        });

希望它能帮助您首先启用longclickable并添加set onlongclicklistener

likeBtn.setLongClickable(true);

likeBtn.setOnLongClickListener(new View.OnLongClickListener() {
           @Override
           public boolean onLongClick(View v) {
               return true;
           }
       });

您的问题是您正在从xml中调用活动的click方法。如果要启用或禁用单击,请删除该行并最初将两者都设置为false。。将xml代码替换为

<ImageButton
    android:layout_width="64dp"
    android:layout_height="64dp"
    android:id="@+id/likeBtn"
    android:src="@drawable/common_ic_googleplayservices"
    android:longClickable="false"
    android:clickable="false" />

现在,您可以在活动的任何位置启用和禁用它。希望这有帮助。:)

我已经找到了解决办法

XML中的clickable和longClickable都设置为true:

<ImageButton
                android:layout_width="64dp"
                android:layout_height="64dp"
                android:id="@+id/likeBtn"
                android:src="@drawable/like"
                android:clickable="true"
                android:longClickable="true"/>
而且它有效


但是,当然,当longClick被禁用时,它仍在振动设备。。。这就是我添加setHapticFeedbackEnabled的原因

请在此处发布您的活动您是否在某些事件中将longclickable设置为true?请告诉我们您希望设置true和False的情况如果您不是从xml调用它,那么它应该可以工作,我在我的Laptop上尝试了它,我希望,但我不应该。
<ImageButton
                android:layout_width="64dp"
                android:layout_height="64dp"
                android:id="@+id/likeBtn"
                android:src="@drawable/like"
                android:clickable="true"
                android:longClickable="true"/>
// setting click listener for question button
        likeBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (var == 1 || var == 3 || var == 4);
                   // do nothing

                else
                    like(v);
            }
        });

        // setting longclick listener for question button
        likeBtn.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                if (var == 1 || var == 2 || var == 4)
                   likeBtn.setHapticFeedbackEnabled(false);

            else{
                likeBtn.setHapticFeedbackEnabled(true);
                showExtraLike(v);
            }

                return true;
            }
        });