小编brk*_*rk3的帖子

覆盖onTouchEvent与ScrollView竞争

从简单的概述我有一个自定义视图,其中包含用户可以拖动和调整大小的一些位图.

我这样做的方式是相当标准的,因为我在我的CustomView中重写onTouchEvent并检查用户是否在图像中触摸等.

当我想将这个CustomView放在ScrollView中时,我的问题出现了.这可行,但ScrollView和CustomView似乎竞争MotionEvents,即当我尝试拖动图像时,它移动缓慢或视图滚动.

我想我可能需要扩展ScrollView,以便我可以覆盖onInterceptTouchEvent并让它知道用户是否在图像的范围内而不是尝试滚动.但是,因为ScrollView在层次结构中更高,我将如何访问CustomView的当前状态?

有没有更好的办法?

user-interface android drag-and-drop scrollview

16
推荐指数
2
解决办法
2万
查看次数

在拖动时停止OnLongClickListener

我有一个带有位图的自定义视图,用户可以拖动它.

我想这样做,当他们长按其中一个我可以弹出一个上下文菜单,其中包括重置位置等选项.

在自定义视图中,我添加了我的OnLongClickListener:

this.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        // show context menu..
        return true;
    }
});
Run Code Online (Sandbox Code Playgroud)

并覆盖onTouchEvent看起来像这样:

public boolean onTouchEvent(MotionEvent event) {
    handleDrag(event);
    super.onTouchEvent(event);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

handleDrag函数查找被按下的对象,并处理更新它的位置.

我的问题是,当我开始拖动图像时,OnLongClickListener也会触发.我不确定解决这个问题的最佳方法.

我已经尝试为handleDrag添加一个阈值,如果用户触摸但不尝试拖动则返回false,但我发现仍然难以获得正确的处理程序.

任何人都可以建议在拖动时跳过OnLongClickListener的方法吗?

android drag-and-drop long-click android-custom-view onlongclicklistener

9
推荐指数
1
解决办法
5305
查看次数

如何防止Android Studio自动完成删除相邻令牌

如果我在Android Studio中编辑现有代码行并接受自动完成,则会在光标右侧显示以下标记:

在此输入图像描述

有没有办法禁用此行为,保持自动完成加上其余的行?

java ide android intellij-idea android-studio

8
推荐指数
1
解决办法
1205
查看次数

Android操作栏列表导航停止工作

我正在使用ActionBarSherlock和ViewPagerIndicator来创建一个包含选项卡和列表导航的活动.

选项卡由FragmentStatePagerAdapter支持,并允许用户在应用程序的不同部分之间导航.列表导航允许用户切换他们当前所在的选项卡的视图模式,例如,如果他们正在查看搜索结果,则他们能够在列表和网格模式之间切换.

我遇到的问题是,当我在选项卡之间滚动时,列表导航会间歇性地停止工作.我可以单击微调器,它会显示选项列表,但是当我选择其中一个微调器中的文本时:

  • 没有更新,
  • onNavigationItemSelected()不会被调用.

(出于某种原因,使用FragmentPagerAdapter而不是FragmentStatePagerAdapter似乎可以经常停止问题,但偶尔也会发生.)

有任何想法吗?

谢谢

android actionbarsherlock android-actionbar viewpagerindicator

5
推荐指数
1
解决办法
351
查看次数

Java断言不打印其"原因"

当我使用"java -ea A"运行以下代码时,断言更正会触发,但我没有提到第二个参数.

public class A {
    public A() {
        assert 1==2, "We have a problem";
    }

    public static void main(String[] args) {
        A a = new A();
    }
}
Run Code Online (Sandbox Code Playgroud)

似乎无法在任何地方找到答案,我错过了什么?

java assert

1
推荐指数
1
解决办法
512
查看次数