相关疑难解决方法(0)

Android:onInterceptTouchEvent和dispatchTouchEvent之间的区别?

Android onInterceptTouchEventdispatchTouchEventAndroid有什么区别?

根据android开发者指南,这两种方法都可以用来拦截触摸事件(MotionEvent),但有什么区别?

怎么办onInterceptTouchEvent,dispatchTouchEventonTouchEvent视图的层次结构中一起互动(ViewGroup)?

java android event-listener event-handling android-touch-event

239
推荐指数
8
解决办法
11万
查看次数

iOS的事件处理 - hitTest:withEvent:和pointInside:withEvent:如何相关?

虽然大多数苹果文档编写得很好,但我认为" iOS事件处理指南 "是一个例外.我很难清楚地了解那里描述的内容.

该文件说,

在命中测试中,窗口调用hitTest:withEvent:视图层次结构的最顶层视图; 此方法通过递归调用pointInside:withEvent:视图层次结构中返回YES的每个视图继续进行,继续向下移动层次结构,直到找到触摸发生在其边界内的子视图.该视图成为热门测试视图.

那么只有hitTest:withEvent:系统调用最顶层的视图,调用pointInside:withEvent:所有子视图,如果从特定子视图返回是YES,那么调用pointInside:withEvent:该子视图的子类?

uikit uiview ios

144
推荐指数
5
解决办法
8万
查看次数

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

我创造了一个onTouchListener.不幸的是onTouch()方法throws我警告:

com/calculator/activitys/Calculator$1#onTouch should call View#performClick when a click is detected
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我没有找到有关此警告的任何信息.这是完整的代码:

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;
    }   
});
Run Code Online (Sandbox Code Playgroud)

android ontouchlistener

92
推荐指数
3
解决办法
5万
查看次数

如何在Android中获得Touch位置?

我需要在android中获得触摸开始位置(X,Y),触摸移动位置和触摸屏幕的结束位置.

android

89
推荐指数
3
解决办法
13万
查看次数

什么导致Android中的MotionEvent.ACTION_CANCEL?

我正在调试Android上的一些触摸处理内容,并试图找出发送到我的View的MotionEvent onTouchListener包含取消操作的原因.我无法找到有关其原因的任何文档,并希望有人能指出我正确的方向来调试此问题 - 错误代码,源代码或一些常识.

debugging android motionevent

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

onInterceptTouchEvent只获取ACTION_DOWN

为什么ViewGroup唯一得到ACTION_DOWNonInterceptTouchEvent?根据文档,只要返回false,它就应该接收所有事件类型. http://developer.android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent%28android.view.MotionEvent%29 第3点.

示例代码:

public class MainActivity extends Activity {

    private static final String TAG = MainActivity.class.getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new Container(this));
    }

    private class Container extends LinearLayout {

        public Container(Context context) {
            super(context);
            setBackgroundColor(0xFF0000FF);
        }

        @Override
        public boolean onInterceptTouchEvent(MotionEvent ev) {
            Log.i(TAG, "onInterceptTouchEvent");
            int action = ev.getActionMasked();
            switch (action) {
            case MotionEvent.ACTION_DOWN:
                Log.i(TAG, "onInterceptTouchEvent.ACTION_DOWN");
                break;
            case MotionEvent.ACTION_MOVE:
                Log.i(TAG, "onInterceptTouchEvent.ACTION_MOVE");
                break;
            case MotionEvent.ACTION_CANCEL:
            case MotionEvent.ACTION_UP:
                Log.i(TAG, "onInterceptTouchEvent.ACTION_UP");
                break;
            }
            return …
Run Code Online (Sandbox Code Playgroud)

java android

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

触摸时ACTION_CANCEL

我有以下类,表示可触摸的视图并绘制幻灯片栏.

public class SlideBar extends View {
private int progress;
private int max;

private Paint background;
private Paint upground;

private RectF bar;

private boolean firstDraw;

public SlideBar(Context context, AttributeSet attrs) {
    super(context, attrs);
    progress = 0;

    upground = new Paint();
    upground.setColor(Color.parseColor("#C2296C"));

    background = new Paint();
    background.setColor(Color.parseColor("#777777"));
}

private void onFirstDraw() {
    max = getWidth();
    bar = new RectF(0, 19, max, 21);
}

public void onDraw(Canvas canvas) {
    if (!firstDraw) {
        onFirstDraw();
        progress = max;
        firstDraw = true;
    }

    canvas.save();
    canvas.drawRoundRect(bar, …
Run Code Online (Sandbox Code Playgroud)

events android view touch

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

在android中单击EditText外部时关闭键盘

我有一个EditText电话myTextview.我希望软键盘在我点击时显示,EditText但如果我点击外面则解雇EditText.所以我使用下面的方法.但是当我在视图外面点击时键盘不会被忽略(我点击了一下TextView).我该如何修复此代码?

myTextview.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
            } else {
                InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(myTextview.getWindowToken(), 0);
            }

        }
    });
Run Code Online (Sandbox Code Playgroud)

android android-layout

20
推荐指数
3
解决办法
4万
查看次数

MotionEvent中的ACTION_CANCEL和ACTION_UP有什么区别?

我想跟踪屏幕上的手指触摸.所以我所做的就是在MotionEvent触发时开始记录位置ACTION_DOWN,但我怎么知道动作何时结束ACTION_CANCEL,或者ACTION_UP

它们之间的确切区别是什么?

android motion motionevent

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

使用touchListener和clickListener处于突出显示状态的左侧按钮

执行以下操作后,我的按钮保持在突出显示状态时出现问题:

public class MainActivity extends AppCompatActivity {

    @SuppressLint("ClickableViewAccessibility")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        AppCompatButton button = (AppCompatButton) findViewById(R.id.mybutton);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d("Test", "calling onClick");
            }
        });
        button.setOnTouchListener(new View.OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN: {
                        v.getBackground().setColorFilter(0xe0f47521,PorterDuff.Mode.SRC_ATOP);
                        v.invalidate();
                        break;
                    }
                    case MotionEvent.ACTION_UP: {
                        v.getBackground().clearColorFilter();
                        v.invalidate();
                        v.performClick();
                        Log.d("Test", "Performing click");
                        return true;
                    }
                }
                return false;
            }
        });

    }
}

Run Code Online (Sandbox Code Playgroud)

关于上面的代码,在使用它时,我希望按钮单击由触摸来处理,并且通过返回“ true”,处理应在touchListener处停止。

但这种情况并非如此。即使正在调用单击,按钮仍保持突出显示状态。

我得到的是:

Test - …
Run Code Online (Sandbox Code Playgroud)

android ontouchlistener android-button onclicklistener

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

Click through RecyclerView ViewHolder

I have a RecyclerView that displays an Button which extends outside its parent ViewHolder. To the button I added a clickListener to display a toast. If you click on the Button and the click is on the area of the Button parent ViewHolder, the toast shows, but if you click on the button but outside its parent ViewHolder the toast doesn't show anymore.

Toast 显示如果您单击此处

如果您单击此处,Toast 不会显示

Here's what I currently have

RecyclerView:

<androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:clipChildren="false"
        android:clipToPadding="false"
        android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:focusedByDefault="false"
        android:scrollbars="horizontal" …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview

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