我有一个 EditText
,它被放置在 Framelayout
中。我试图让 EditText
在被选中时可以在屏幕上移动。
因此,每当用户选择允许移动项目的模式时,我都会将编辑文本设置为启用(false),这是通过消除编辑文本获得焦点并显示闪烁光标或软键盘的可能性来实现的.但与此同时,当我尝试移动它时,我无法接收到任何触摸输入。
有什么解决方案可以让我移动编辑文本而不让编辑文本接收焦点吗?
我尝试将 focusable
或 focusableInTouchMode
设置为 false,但它也不起作用。
最佳答案
我通过两个设置完成了此操作。首先,您需要让包装器结构 (LinearLayout) 处理移动事件。将其挂接到包装器的 Touch 事件:
void FrameTouch (object sender, View.TouchEventArgs e)
{
if (e.Event.Action == MotionEventActions.Move) {
int placeX = (int)e.Event.GetX () - v.Width / 2;
int placeY = (int)e.Event.GetY () - v.Height / 2;
v.Layout (placeX, placeY, placeX+v.Width, placeY+v.Height);
}
}
然后您需要覆盖 EditText 的 onTouch 事件以确保它在禁用时不会吞下触摸事件:
public override bool OnTouchEvent (MotionEvent e)
{
if (!Enabled)
return false;
base.OnTouchEvent (e);
return true;
}
关于android - 移动编辑文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7194617/