Tag: ontouchlistener

无法同时处理点击和触摸事件

我正在尝试处理触摸事件并单击button上的事件。 我做了以下几点: button.setOnClickListener(clickListener); button.setOnTouchListener(touchListener); 当任何一个监听器注册的东西工作正常,但是当我尝试使用它们时,只有触摸事件被触发。 任何解决方法? 我究竟做错了什么?

onTouchListener警告:当检测到点击时,onTouch应该调用View#performClick

我已经创build了一个onTouchListener 。 不幸的是onTouch()方法throws一个警告: com/calculator/activitys/Calculator$1#onTouch should call View#performClick when a click is detected 这是什么意思? 我还没有find任何关于这个警告的信息。 以下是完整的代码: LinearLayout llCalculatorContent = (LinearLayout) fragmentView.findViewById(R.id.calculator_content); llCalculatorContent.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Tools.hideKeyboard(getActivity(), getView()); getView().clearFocus(); return false; } });

使用带有内部CoordinatorLayout的BottomSheetBehavior

devise支持库BottomSheetBehavior介绍了BottomSheetBehavior ,它允许一个协调器的孩子充当最底层(从屏幕底部可以拖动的视图)。 我想要做的是, 作为底部视图 ,有以下视图(典型的协调员+崩溃的东西): <CoordinatorLayout app:layout_behavior=“@string/bottom_sheet_behavior”> <AppBarLayout> <CollapsingToolbarLayout> <ImageView /> </CollapsingToolbarLayout> </AppBarLayout> <NestedScrollView> <LinearLayout> < Content … /> </LinearLayout> </NestedScrollView> </CoordinatorLayout> 不幸的是,底部视图应该实现嵌套滚动,否则他们不会得到滚动事件。 如果您尝试使用主要活动,然后将此视图作为底部表单加载,则会看到滚动事件仅作用于“纸张”上,出现了一些奇怪的行为,您可以看到是否继续阅读。 我很确定这可以通过inheritanceCoordinatorLayout来处理,或者通过BottomSheetBehavior 。 你有什么提示吗? 一些想法 应该使用requestDisallowInterceptTouchEvent()来在某些情况下从父requestDisallowInterceptTouchEvent()中窃取事件: 当AppBarLayout偏移量> 0时 当AppBarLayout偏移量是== 0,但我们正在滚动(想一下,你会看到) 第一个条件可以通过设置OnOffsetChanged到内部的应用程序栏获得; 第二个需要一些事件处理,例如: switch (MotionEventCompat.getActionMasked(event)) { case MotionEvent.ACTION_DOWN: startY = event.getY(); lastY = startY; userIsScrollingUp = false; break; case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: userIsScrollingUp […]

onTouchevent()vs onTouch()

经过对onTouchEvent和onTouch的多次实验之后,我发现onTouch可以在任何地方工作(无论是在活动还是在视图中),只要您声明了界面并将Listener放在正确的位置即可! 另一方面,onTouchEvent只能在View中使用! 我的假设是否正确? 这是真正的区别吗?

在ListView中的EditText在Android 4.x上按下时失去焦点

我知道这里有很多类似的问题,但是我不能在简单的示例应用程序中获得任何提供的解决scheme。 第一次显示软键盘时会出现问题。 一旦显示,只需再次按editText使其可编辑。 试过以下几点: android:windowSoftInputMode="adjustPan|adjustResize" 这不是解决任何问题。 似乎这个行是强制性的软键盘popup后,调整活动。 不幸的是,这也导致任何EditTexts失去焦点。 这可能是ListView本身在resize过程之后获得焦点。 所以我尝试了以下解决方法: listView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS); 这总是会导致ListView包含的第一个可见的EditText获得焦点,这是不可取的。 第二行中的第二个EditText应该在按下时获得焦点,这不会发生。 另外,如果我最终设法聚焦另一个EditText,然后显示第一个EditText(例如,通过按下softkeyboard键盘上的“Next”),第一个可见的将在键盘被解散并且ListView被重新调整到其全尺寸。 我尝试了几个其他的东西,例如拦截ListView的onFocusChange()事件,同时知道TouchListener按下了哪个EditText。 再次请求某个EditText的焦点也没有导致任何成功。 使用ScrollView而不是其他用户build议的ListView而不是相关项目的选项。

Android – 按住重复动作

早上一切, 我会承认,我是刚开发的新手,并试图在Android上工作。 我一直在试图search'networkingfind如何实现一些“保持button重复操作”的build议 – 我已经创build了一个button自定义数字键盘,并希望像退格般的行为。 到目前为止,我曾经呼吁过一个没有编码过Android的朋友,但是做了很多C#/ Java,似乎知道他在做什么。 下面的代码工作得很好,但我觉得它可以做得更整齐。 我很抱歉,如果我错过了点点滴滴,但希望这解释了我的方法。 我认为onTouchListener是好的,但线程处理的方式感觉不对。 有没有更好或更简单的方法来做到这一点? 谢谢, 中号 public class MyApp extends Activity { private boolean deleteThreadRunning = false; private boolean cancelDeleteThread = false; private Handler handler = new Handler(); public void onCreate(Bundle icicle) { super.onCreate(icicle); //May have missed some declarations here… Button_Del.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent […]

在触摸事件的canvas中的图像

看起来很简单,但我遇到了实施问题。 我想在屏幕上显示包含onTouch事件的canvas。 我曾尝试ImageView但我无法使用canvas。 我已经尝试了SurfaceView并且能够在canvas上显示图像,但是我在运动onTouch事件(缩放,平移)方面遇到了问题。 我需要canvas,因为我会在我的代码中呈现图像。 有人可以告诉我这样做的正确方法吗?

ScrollView触摸处理中的Horizo​​ntalScrollView

我有一个滚动视图,围绕我的整个布局,使整个屏幕滚动。 我在这个ScrollView中的第一个元素是一个Horizo​​ntalScrollView块,它具有可以水平滚动的function。 我已经在horizo​​ntalscrollview中添加了一个ontouchlistener来处理触摸事件,并强制视图“捕捉”ACTION_UP事件中最接近的图像。 所以我要去的效果就像股票的安卓主屏幕,你可以从一个滚动到另一个,当你拿起你的手指时,它会捕捉到一个屏幕。 这一切都很好,除了一个问题:我需要左右滑动几乎完全水平为ACTION_UP永远注册。 如果我至less垂直滑动(我认为很多人倾向于在左右滑动时使用手机),我将收到ACTION_CANCEL而不是ACTION_UP。 我的理论是,这是因为horizo​​ntalscrollview在滚动视图内,滚动视图劫持垂直触摸允许垂直滚动。 如何从我的水平滚动视图中禁用滚动视图的触摸事件,但是仍然允许在滚动视图中的其他地方进行正常的垂直滚动? 以下是我的代码示例: public class HomeFeatureLayout extends HorizontalScrollView { private ArrayList<ListItem> items = null; private GestureDetector gestureDetector; View.OnTouchListener gestureListener; private static final int SWIPE_MIN_DISTANCE = 5; private static final int SWIPE_THRESHOLD_VELOCITY = 300; private int activeFeature = 0; public HomeFeatureLayout(Context context, ArrayList<ListItem> items){ super(context); setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); setFadingEdgeLength(0); this.setHorizontalScrollBarEnabled(false); […]