2016-08-23 3 views
1

나는 활동 내에서 editText와 일부 버튼을 가지고있다. 가로 모드로 전화를 기울일 때마다 표준 값으로 재설정됩니다. 이를 변경하려면, 나는 활동 매니페스트에이 줄을 추가 :레이아웃 및 레이아웃 (토지) XML 파일을 올바르게 사용하는 방법은 무엇입니까?

android:configChanges="orientation|keyboardHidden|screenSize" 

을 그리고이와 나는 전화 방향을 변경 거기에 같은 값을 얻었다. 그러나 내 레이아웃은 세로 모드와 가로 모드에서 완벽했습니다 (버튼은 화면에서 벗어났습니다). 따라서 레이아웃과 레이아웃 (토지)의 두 xml 파일이 있습니다. 이 방법으로이 액티비티가 호출 될 때 폰이 기울이면 레이아웃 (토지)이 호출됩니다. 그렇지 않으면 세로 레이아웃이 호출됩니다. 그러나 활동이 호출 된 후에 휴대 전화를 기울일 때마다 사용 된 레이아웃은 동일하게 유지됩니다. 나는 활동 호출과 그 후에 레이아웃을 동적으로 변경하는 방법을 알고 싶다.

답변

1

매니페스트에 android:configChanges을 지정하여 작업을 다시로드하지 못하게 할 수 있습니다.

제거하면 활동이 회전 변경시 ​​다시로드되어 레이아웃을 올바르게 처리 할 수 ​​있습니다. 그러면 순환 중 일시적인 데이터를 저장하고 복원하기 위해 활동의 라이프 사이클 이벤트를 처리해야합니다.

https://developer.android.com/training/basics/activity-lifecycle/recreating.html#SaveState

0

일반적으로/res/layout의 레이아웃 파일은 세로 및 가로 모두에 적용됩니다. 예를 들어

,

/res/layout/activity_main.xml 

이 새 폴더 /res/layout-land를 추가 할 수는이 폴더에 activity_main.xml을 복사 할 필요한 조정

폴더의 이름이 레이아웃 -해야해야합니다 조경 모드를위한 땅.

+0

나는 이것을했다. 내가 알고 싶은 것은 editText 값을 지우지 않고 두 레이아웃을 모두 동적으로 사용하는 방법입니다. 내가 값을 변경 한 방식은 변경되지 않았지만 활동이 호출 된 후 레이아웃을 변경할 수 없습니다. – GabrielRado

관련 문제