Android

Android - TextView 그리고 EditText View 전환

TechNote.kr 2016. 1. 19. 23:16
728x90

메모장 같은 프로그램을 보면 

일반 TextView였다가 edit 버튼을 누르면 EditText View로 변경되고,

save 버튼을 누르면 다시 TextView로 전환되는 광경을 볼 수 있다.


하나의 view를 가지고 속성을 변경해 가면서 사용하는 것인가...

아니면 2개의 view를 가지고 전환해 가면서 사용하는 것인가...


여러 가능성을 열어두고 구글링을 해 본 경과, TextView, EditText를 각각 구현해 놓고 전환해가능 방법이 사용된다는 것을 확인했다.


우선 layout xml에 다음과 같이 선언한다.

<EditText
android:id="@+id/LineEditText"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="top"
android:background="@null"
android:textSize="20sp"
android:visibility="gone" />

<TextView
android:id="@+id/LineTextView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="top"
android:background="@null"
android:textSize="20sp" android:visibility="visible"/>

여기서 관심있게 보아야 하는 부분은 android:visibility 이다.


수정이 필요할때는 EditText 를 visible하게 하고, 수정이 필요 없을 때는 TextView를 visible하게 하는 것이다.


그렇다면 코드상에서는 어떻게 변경을 할까....

if (mode.equals("View")) {


    e_edittext.setVisibility(View.INVISIBLE);

    e_textview.setVisibility(View.VISIBLE);
    e_textview.setText(memo_body);

} else if (mode.equals("Edit")) {

    e_textview.setVisibility(View.INVISIBLE);
    e_edittext.setVisibility(View.VISIBLE);
    e_edittext.setText(memo_body);

}


View class의 속성인 View.INVISIBLE, View.VISIBLE을 적용해서 사용하면 된다.


단, 주의할 점은 각기 서로 다른 view이기 때문에 TextView -> EditText 일 때는 TextView의 Text를 가져와서 EditText에 set 해주어야 하고, 반대의 경우도 마찬가지이다.


TextView -> EditText 의 경우

String temp = (String)e_textview.getText();

e_edittext.setText(temp);


EditText -> TextView 의 경우

String temp = e_edittext.getText().toString();

e_textview.setText(temp);


위의 코드들을 시나리오에 맞게 코드에 구현해 주면 사용자의 입장에서는 하나의 화면에서 EditView, TextView가 전환되는 효과를 확인할 수 있다.


728x90