메모장 같은 프로그램을 보면
일반 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가 전환되는 효과를 확인할 수 있다.
'Android' 카테고리의 다른 글
Android - 이미지 저장 및 변경 on Project. (0) | 2016.01.24 |
---|---|
Android - Material Design of Google. (0) | 2016.01.24 |
Android - Back key 무시 (0) | 2016.01.20 |
Android - 더블탭(double tap), 더블클릭, 더블터치 (0) | 2016.01.19 |
Android - ListView 갱신 with CursorAdapter. (0) | 2016.01.18 |
Android - Activity 화면 전환 효과 (0) | 2016.01.18 |
Android - Application Class (0) | 2016.01.18 |
Android - Cursor (0) | 2016.01.15 |