본문 바로가기

구글과인터넷/안드로이드

안드로이드 editText에 처음에 포커스 안가게 하는방법

출처: http://www.androidpub.com/52185


화면 띄웠을때 edit text가 있으면 거기에 focus가 가있는데요 (마치 터치해서 포커싱가게한거처럼)

첨에 화면띄웠을때 editText에 focus가 안가게 할 수 있는 방법이 뭐가 있는지 아시는분 좀 알려주세요~~

setFocusable(false)를 하니깐 첨에 focus안가긴하는데 클릭해도 focus가 안생기는거 같더라구요.

답변좀 부탁드립니다.

댓글
2009.12.17 13:45:43
쩡이

저는 전 액티비티에서 현재 액티비티를 실행하는데요~
실행해주면서 인텐트에 구별하기위한 값을 주었습니다.

onCreate()에서 인텐트를 받아서 구별했습니다.
입력이 필요하면
 mIsNew = true 해서 바로 포커스가 가구요
mIsNew = false 해서 바로 포커스가지 않습니다.

한번 티치하면 그 부터는 터치가 가면 포커스가 갑니다.

  if (!mIsNew)
   mText.setFocusableInTouchMode(false);

  mText.setOnTouchListener(new OnTouchListener() {

   @Override
   public boolean onTouch(View v, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
     if (!mIsNew) {
      mText.setFocusableInTouchMode(true);
      mIsNew = true;
     }
    }
    return false;
   }
  });

댓글
2010.07.14 18:31:39
하늘이야기
혹시나 참조하실 다른분을 위해서 메모를 추가합니다.
Activity 설정에 android:windowSoftInputMode="stateAlwaysHidden" 를 추가하시면 됩니다.

/////////////////////////////////////////////////////////////////////


출처: http://blog.naver.com/PostView.nhn?blogId=jolangma&logNo=150102596411

Activity가 시작하자마자 EditText에 포커스가 주어져 Soft Input Method가 뜹니다.

아주 귀찮은 일이 아닐수 없습니다.

그래서 당연히 구글링을 했죠.


방법 1. 처음부터 포커스를 다른 뷰에게 줍니다.

포커스가 주어져도 티가 나지 않는 뷰에게 포커스를 설정합니다.

저는 대부분 루트 뷰에다 설정해 줍니다.


<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

...

android:focusableInTouchMode="true"

<EditText android:id="@+id/input".../>

</LinearLayout>


방법 2. AndroidManifest.xml에서 EditText를 보여주는 Activity에 속성을 줍니다.


step 1. 처음에는 Soft Input Method를 보이지 않게 합니다.

<activity ...android:windowSoftInputMode="stateAlwaysHidden" />


step 2.  EditText를 누르면 Soft Input Method가 보여집니다.



방법 3. EditText에 속성을 변경해서 구현할 수도 있습니다.


step 1. 처음에는 Soft Input Method를 보이지 않게 합니다.

<!-- XML 파일에서 속성을 설정하거나 -->

<EditText android:id="@+id/input"

...

android:inputType="none"

/>

// 코드에서 속성을 설정해 줍니다.

EditText input = (EditText) findViewById(R.id.input);

input.setInputType(EditorInfo.TYPE_NULL);


step 2. EditText를 누르면 속성을 변경해 줍니다.

Input.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {

        searchInput.setInputType(EditorInfo.TYPE_CLASS_TEXT);

    }

});


step 3. 다시 한 번 EditText를 누르면 Soft Input Method가 보여집니다.