2014-12-01 3 views
0

내 활동에서 화면 방향에 "의존"하는보기가 있습니다. 가로 모드 인 경우 레이아웃 - 큰 핸드 아래의 레이아웃을 사용하지만 가로 모드 인 경우 레이아웃 폴더 아래의 레이아웃을 사용합니다. 활동에는 마커와 정보가 포함 된지도가 표시됩니다. 내 AndroidManifest를에서오리엔테이션 변경시보기 다시로드

은 내가

android:configChanges="orientation|screenSize" 

을 가지고 있지만 활동은 세로 모드에서만 레이아웃을 보여줍니다.

어떻게 해결할 수 있습니까?

편집 3/12 :

는이 같은 레이아웃이 있습니다

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<fragment 
    android:id="@+id/map" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    class="com.google.android.gms.maps.MapFragment" /> 

<include 
    android:id="@+id/my_view" 
    layout="@layout/my_view" 
    android:visibility="gone" /> 

</RelativeLayout> 

을하고 난 my_view 레이아웃을 변경하는 것을 원하지만지도는 모든 마커, 줌 레벨, 위치, ECC ECC로 남아 ...

활동 내에서 dinamically 만든 버튼을 클릭하면 my_view가 표시됩니다.

편집 2 :

처럼 SweetWisher ツ 내가 설정에 뷰에 대한 사용자 정의 동작을 시도하고 있었다 말한다. 그러나 장치를 회전하면지도가 사라집니다. 당신은 화면 방향 변화에 뷰 계층 구조의 기본 설정을 복구하기에서 안드로이드를 방지하고 매니페스트에 android:configChanges="orientation"를 사용하는 경우

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    initUI(); 
} 

private void initUI() { 
    setContentView(R.layout.my_layout); 

    if (mp == null) { 
     mp = MapFragment.newInstance(); 
    } 
    getFragmentManager().beginTransaction().replace(R.id.placeholder, mp).commit(); 

    initUIStuff() 
} 

private void initUIStuff(){ 

} 



@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    initUI(); 

} 

@Override 
protected void onStart() { 
    super.onStart(); 
    initGMap(); 
} 

@Override 
protected void onResume() { 

    super.onResume(); 
    initGMap(); 
} 

private void initGMap() { 
    if (mp != null { 
     //Initialize Map 
    } 
} 
+0

[읽기] (http://stackoverflow.com/a/13848525/2591002) 및 [따르기] (http://stackoverflow.com/a/13938015/2591002) –

+0

가이드를 따르려고했습니다. . 게시물에 몇 가지 정보를 추가했습니다. 하지만 버튼을 클릭하면 my_view의 레이아웃이 동일 해집니다. – Garro88

답변

1

:이 활동 내 코드의 일부입니다. onConfigurationChanged 방법으로보기를 수동으로 변경해야하며 원하는 레이아웃을 부 풀리고 이전 레이아웃을 그 패턴으로 바꿔야합니다. Android 자동 뷰 계층 구조 재설정을 이용하려면 android:configChanges="orientation"을 사용하지 마십시오.

편집 : XML을 통해지도 조각을 추가 할 수 를 사용하여 다음 코드 :

<fragment 
    android:id="@+id/map" 
    android:name="com.google.android.gms.maps.MapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

또한 'onConfigurationChange'방법은 그래서 삭제 지금은 필요가 없습니다.

+0

가로 또는 세로 모드 인 경우 단일보기에 다른 레이아웃을 사용하려면 모든보기 동작을 관리해야합니까? 어쨌든 나는 manifest에서 'android : configChanges'태그를 제거하려했지만 항상 같은 레이아웃을 보았습니다. – Garro88

+1

'android : configChanges'를 계속 사용한다면, 모든 뷰를 수동으로 관리해야합니다. 'android : configChanges'가 없으면 안드로이드 OS가 당신을 위해 뷰를 할 것입니다. 레이아웃 디렉토리의 이름이 부적절하기 때문에 태그를 제거한 후에도 차이점을 발견 할 수 없다고 생각합니다./res/layout-land의 가로 레이아웃과/res/layout의 세로 레이아웃을 넣으십시오. –

+0

Ooooops ... 가로 레이아웃의 폴더는 레이아웃 대지이고 레이아웃이 아닌 레이아웃이었습니다. 이제 작동합니다! 그러나 회전 후에지도가 표시되지 않습니다. 내 업데이트 된 게시물을 참조하십시오. – Garro88