스마트기기개발관련/안드로이드 개발

안드로이드 focus이동 id로 포커스이동 setNextFocusDownId setNextFocusUpId setNextFocusLeftId setNextFocusRightId

AlrepondTech 2013. 11. 1. 17:46
반응형

 

 

 

=================================

=================================

=================================

 

 

 

 

 

 

 

출처: http://blog.naver.com/ovter?Redirect=Log&logNo=136025187

 

 

 

 

안드로이드 EditText focus이동

 

 

 

 

안드로이드 EditText 포커스의 이동은 기본적으로 아래이다.(android:singleLine 적용시)

                           

 

 

 


위와 같이 위 아래로 배치 되었을 때 키보드의 다음을 누르면 포커스가 아래에 있는 EditText로 간다.

이 때는 문제가 없지만 아래와 같이 EditText가 배치 되었을 때는 이야기가 다르다.

기본적으로 포커스가 아래로만 이동하기 때문에 포커스를 왼쪽이나 오른쪽 위로 가게 할수 없다.

 

 

 

 

 

 

이럴때 유용한것이 setNextFocusDownId 와 android:nextFocusDown 이다.

setNextFocusDownId는 .java(소스)단에서 android:nextFocusDown은 XML단에서 함수다.

 

소스단에서 쓰는 방법은 다음과 같다.

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.focus_main);
        
        EditText edt1 = (EditText)findViewById(R.id.edt1);
        edt1.setNextFocusDownId(R.id.edt2);
        EditText edt2 = (EditText)findViewById(R.id.edt2);
        edt2.setNextFocusDownId(R.id.edt3);
        EditText edt3 = (EditText)findViewById(R.id.edt3);
        edt3.setNextFocusDownId(R.id.edt4);
    }

 

XML단에서 쓰는 방법은 다음과 같다.

<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:background="#FFFFFF">
 <LinearLayout
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <LinearLayout
   android:layout_width="fill_parent"
   android:layout_height="wrap_content">
   <EditText
    android:id="@+id/edt1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:singleLine="true" />
   <EditText
    android:id="@+id/edt2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:singleLine="true"
    android:nextFocusDown="@id/edt1" />
  </LinearLayout>
  <LinearLayout
   android:layout_width="fill_parent"
   android:layout_height="wrap_content">
   <EditText
    android:id="@+id/edt3"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:singleLine="true"
    android:nextFocusDown="@id/edt2" />
   <EditText
    android:id="@+id/edt4"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:singleLine="true"
    android:nextFocusDown="@id/edt3" />
  </LinearLayout>
 </LinearLayout>
</LinearLayout>

 

*setNextFocusDownId와 android:nextFocusDown 이외에도

setNextFocusLeftId                  android:nextFocusLeft         

setNextFocusRightId                android:nextFocusRight

setNextFocusUpId                    android:nextFocusUp

이란 옵션들이 있지만 Down제외한 다른것들은 동작하지 않았다.

왜지?;;;

 

 

 

 

=================================

=================================

=================================

 

 

 

 

[출처] 안드로이드 EditText focus이동|작성자

 

////////.ㅕㅛㅗㅑㅏㅘ

 

 

 

 쿠우ㅇㅇ

 

반응형