Android:如何通过编程将视图的longclickable设置为true,同时保持其clickable为false?
我有一个视图,最初在xml中是这样开始的: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
<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似乎无效李>
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;
}
});