Morozov Asked:2020-05-02 22:12:56 +0000 UTC2020-05-02 22:12:56 +0000 UTC 2020-05-02 22:12:56 +0000 UTC 禁用视图 772 有一个虚拟键盘(我的自定义键盘),我怎样才能让它不可点击?我试过了keyboardView.isEnabled,keyboardView.isEnabled = false可惜,它仍然会发出咔哒声。 android 1 个回答 Voted Best Answer Artilirium 2020-05-03T13:26:17Z2020-05-03T13:26:17Z 我不知道Kotlin,但我可以假设您正在尝试应用Enabled = false到Clickable = false所有键所在的布局。考虑到布局本身很难处理触摸,您的操作变得毫无用处。 你有以下三种方式: 1)在键盘的各个按键上挂Enabled = false一样Clickable = false的; 2)要么拦截布局上的触摸,而不是将它们传递给View里面的按钮,不幸的是我不知道这是如何使用 完成的Kotlin,但Java它会是这样的: 在自定义类中,KeyboardView添加一个变量和一个方法: private boolean mLock; public void setLock(boolean lock) { mLock = lock; } 并像这样覆盖 dispatchTouchEvent 方法: @Override public boolean dispatchTouchEvent(MotionEvent ev) { return mLock || super.dispatchTouchEvent(ev); } View3) 隐含地在整个键盘上放置一个透明的,这将拦截对自身的触摸。 在Java这种情况下,最好将绘制的父View级放置在KeyboardView具有android:visibility="invisible"+属性和宽度和高度参数的自定义类的标记内。android:id="@+id/block"并在类中添加一个方法: public void setLock(boolean lock) { findViewById(R.id.block).setVisibility(lock ? VISIBLE : INVISIBLE); }
我不知道
Kotlin,但我可以假设您正在尝试应用Enabled = false到Clickable = false所有键所在的布局。考虑到布局本身很难处理触摸,您的操作变得毫无用处。你有以下三种方式:
1)在键盘的各个按键上挂
Enabled = false一样Clickable = false的;2)要么拦截布局上的触摸,而不是将它们传递给
View里面的按钮,不幸的是我不知道这是如何使用 完成的Kotlin,但Java它会是这样的:在自定义类中,
KeyboardView添加一个变量和一个方法:并像这样覆盖 dispatchTouchEvent 方法:
View3) 隐含地在整个键盘上放置一个透明的,这将拦截对自身的触摸。在
Java这种情况下,最好将绘制的父View级放置在KeyboardView具有android:visibility="invisible"+属性和宽度和高度参数的自定义类的标记内。android:id="@+id/block"并在类中添加一个方法: