2011-08-25 12 views
1

에있는 EditText이 있습니다. 내가 선택한 때 EditText 화면 주위를 이동할 수 있도록 노력하고있어.편집 텍스트 이동

따라서 사용자가 항목을 이동할 수있는 모드를 선택할 때마다 편집 텍스트를 활성화 (false)로 설정합니다.이 기능은 포커스를 얻기 위해 텍스트를 편집 할 가능성을 제거하고 깜박이는 커서 또는 소프트 키 보드. 그러나 동시에 이동을 시도 할 때 터치 입력을받을 수 없습니다.

편집 텍스트를 이동하고 편집 텍스트를 사용하여 포커스를받을 수있는 솔루션이 있습니까?

focusable 또는 focusableInTouchMode을 false로 설정하려고했으나 작동하지 않습니다.

답변

0

EditText를 자체 레이아웃 (예 : LinearLayout)에 배치하면 EditText 대신 터치 이벤트가 반응 할 수 있습니다.

+0

그래, :

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); } } 

그런 다음 당신이 그것을 사용하지 동안 터치 이벤트를 삼키지 않도록 확인하기 위해 글고의 onTouch 이벤트를 재정의해야 , 그것은 레이아웃으로 싸여 있습니다. 하지만 편집 텍스트의 매개 변수를 누르면 커서가 깜박이며 소프트 키 보드가 나타납니다. –

+0

'setFocusableInTouchMode()'를보고 EditText의 포커스를 비활성화하면 LinearLayout이 대신 포커스를 가져와야합니다. –

+0

이 소프트 키 보드가 나오지만 커서가 붙여 넣을 내용이 없다고 생각합니다. –

0

나는 올바른 선택하지 않을 수 FrameLayout이를 사용하여 생각 :

FrameLayout이 모든 자식 요소

화면의 왼쪽 상단 모서리에 고정된다 하위보기에 대해 다른 위치를 지정할 수 없습니다. (from docs)

1

두 가지 설정으로이 작업을 수행했습니다. 먼저 래퍼 구조 (LinearLayout)가 이동 이벤트를 처리하도록해야합니다. 래퍼의 터치 이벤트에이 후크 : 지금

public override bool OnTouchEvent (MotionEvent e) 
{ 
    if (!Enabled) 
     return false; 

    base.OnTouchEvent (e); 
    return true; 
}