2014-06-25 4 views
0

화면 내비게이션 탭이있는 기기에 내 앱을 다운로드하면 내 레이아웃 중 일부가 서로 겹쳐지기 시작합니다.LinearLayout의 Android 레이아웃이 화면 내비게이션이있는 기기에서 겹칩니다.

기본적으로 부모 십자가는 LinearLayout이고 나머지 네 개의 자식은 LinearLayout입니다. 네비게이션이 스크린 상에있을 때, 아이들 레이아웃은 서로 겹쳐지기 시작합니다.

정상입니까? 나는 기본 Android 위젯을 사용 했으므로 중복 된 문제가 없어야한다고 생각했습니다.

초기화 코드 :

// other code ... 

    mainLayout = new LinearLayout(getActivity()); 
    mainLayout.setOrientation(LinearLayout.VERTICAL); 

    // other code... 

    titleBarLayout = new RelativeLayout(getActivity()); 
    titleBarLayout.setGravity(Gravity.CENTER); 
    mainLayout.addView(titleBarLayout); 

    titleBarLayout.getLayoutParams().width =SCREEN_WIDTH; 

    // other code... 

    miniBarLayout = new LinearLayout(getActivity()); 
    miniBarLayout.setOrientation(LinearLayout.HORIZONTAL); 
    miniBarLayout.setGravity(Gravity.CENTER); 
    miniBarLayout.setPadding(0, 1, 0, 1); 
    mainLayout.addView(miniBarLayout); 

    // other code... 

    userBarLayout = new LinearLayout(getActivity()); 
    userBarLayout.setOrientation(LinearLayout.HORIZONTAL); 

    mainLayout.addView(userBarLayout); 

특정 문제 : userBarLayoutminiBarLayout와 겹칩니다.

답변

0

화면에서 서로 옆에 놓은 뷰 (또는 위젯)의 크기 합계가 사용 가능한 공간보다 커지면 뭔가가 제공됩니다.이 문제를 해결할 수있는 옵션은 여러 가지가 있습니다.

  • RelativeLayouts를 사용하여 다른보기를 기준으로보기의 위치를 ​​지정하면 Android가 앱의 화면 공간 부족 문제를 해결하는 방법에 대한 더 나은 힌트를 제공합니다.
  • "여유 공간"이있는 방식으로보기/위젯의 크기를 정의하십시오. 일반적으로보기의 "가중치"및 "weightSum"속성이 필요하므로이 "여유"공간으로 수행 할 작업을 정의하십시오. 즉, 상대적인 방식으로 뷰의 크기를 정의하십시오. (참고 : 가중치를 사용하는 경우 고정 크기를 모두 고려한 후 해당 공간 만 SPARE 공간에만 적용되므로 조회수의 모든 크기를 의도적으로 0dp로 설정 한 다음 모든 항목을 상대 가중치로 정의하고자 할 수 있습니다)
  • 정말로 dp와 같은 "어려운"숫자로 레이아웃을 정의하려면 특정 장치/장치 범주에 대해 별도의 레이아웃 XML 파일을 만들어야 할 수 있습니다. 그런 다음 레이아웃 파일은 속성이있는 리소스 디렉토리 (/ res/layout-large/res/layout-w700dp 등)에 저장해야합니다.
+0

좋은 소리는 들리지만 제목 표시 줄 너비와 보기가 다른보기로 완전히 채워지지 않으므로 "여유 공간"이 있어야합니다. 당신이 제안한 것을 시도하고이 대답으로 돌아가겠습니다. –

+0

메인 레이아웃의 어느 뷰가 너무 많은 공간을 차지하고 있는지 알고 싶다면 HierarchyViewer를 사용하여 mainLayout 및 children에 대한 measuredHeight/layoutHeight의 값을 살펴볼 수 있습니다. 그건 아마 당신에게 더 많은 통찰력을 줄 것입니다. 실수로 잘못된 값으로 설정 한 레이아웃 매개 변수가 있거나 어쩌면 여기서 추측하고있는 이미지 중 하나가 잘못된 리소스 폴더에서 너무 큽니다. 기타 등등. HierarchyViewer는 IDE에서 액세스 할 수 있어야하며 android-sdk의 'tools'디렉토리에서 HierarchyViewer를 실행할 수도 있습니다. – baske

관련 문제