2012-03-30 5 views
0

예를 들면 : 은하 탭에 대한 레이아웃을 (편집기를 사용하여)하겠습니다. 내가 갤럭시 탭 에뮬레이터를 실행하면 내 서클이 그 "화면"주위에 흩어질 것입니다. 작은 휴대 전화 용 레이아웃을 만든 다음 휴대 전화의 에뮬레이터를 실행하면 같은 결과가 나타납니다. 내 서클은 내가 정의한 것보다 다른 곳에 배치됩니다. 에디터가 내가 원하는 것처럼 내 서클을 설정 한 것처럼 보입니다. 이미지 뷰와 관련하여 맨 위에 배치됩니다. 그러나 장치는 에뮬레이트 된 장치의 화면 크기에 비례하여 원을 배치하는 것처럼 보입니다.레이아웃은 안드로이드 레이아웃 편집기에서 잘 어울립니다. - 에뮬레이트 된 디바이스에서는 완전히 꺼져 있습니다.

viola_desmond_pic.getWidth() 및 viola_desmond_pic.getHeight()를 사용하여 프로그래밍 방식으로 원을 배치 할 수 있지만 화면 크기가 아니라 화면 크기 만 반환합니다. 나는 다른 밀도에 대한 dp와 계획을 이해하지만, 레이아웃 편집기/에뮬레이터의 불일치는 미친 짓이다.

  1. 다른 사람에게이 불일치 문제가 있습니까? 나는 무엇인가를 아주 잘 바라 볼 수 있었다.
  2. "viola_desmond_pic"이미지 뷰의 정확한 크기를 얻을 수 있고 XML을 건너 뛰기로 결정한 경우 특정 레이아웃에서 비율로 레이아웃을 수행 할 수 있습니까?

다음은 "layout-xlarge"폴더의 XML입니다. 나는 안드로이드 2.1

내가 에뮬레이터가 올바른 리소스를 사용하지 않는 비슷한 문제가 있었다
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/RelativeLayout04" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" > 

<ImageView 
    android:id="@+id/viola_desmond_pic" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:adjustViewBounds="true" 
    android:contentDescription="@string/desc" 
    android:scaleType="fitCenter" 
    android:src="@drawable/viola_desmond" /> 

<ImageView 
    android:id="@+id/keyhole" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginLeft="160dp" 
    android:layout_marginTop="95dp" 
    android:adjustViewBounds="true" 
    android:contentDescription="@string/desc" 
    android:scaleType="fitCenter" 
    android:src="@drawable/circle3" /> 

<ImageView 
    android:id="@+id/gun" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/keyhole" 
    android:layout_alignRight="@+id/cat" 
    android:layout_marginRight="42dp" 
    android:adjustViewBounds="true" 
    android:contentDescription="@string/desc" 
    android:paddingBottom="35dp" 
    android:paddingLeft="60dp" 
    android:paddingRight="50dp" 
    android:scaleType="fitCenter" 
    android:src="@drawable/circle3" /> 

<ImageView 
    android:id="@+id/popcorn" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_marginBottom="61dp" 
    android:layout_marginLeft="83dp" 
    android:layout_toRightOf="@+id/keyhole" 
    android:adjustViewBounds="true" 
    android:contentDescription="@string/desc" 
    android:paddingBottom="10dp" 
    android:paddingLeft="15dp" 
    android:paddingRight="15dp" 
    android:paddingTop="20dp" 
    android:scaleType="fitCenter" 
    android:src="@drawable/circle3" /> 

<ImageView 
    android:id="@+id/pen" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginRight="24dp" 
    android:layout_marginTop="46dp" 
    android:adjustViewBounds="true" 
    android:contentDescription="@string/desc" 
    android:paddingBottom="140dp" 
    android:paddingTop="140dp" 
    android:src="@drawable/circle3" /> 


</RelativeLayout> 

답변

2

을 목표로하고 있습니다 - 그것은 중간 밀도를 수정 해하고 불일치가 발생할 수있는 최대 확장 즉. 각 레이아웃에 설명 텍스트가 포함 된 텍스트 뷰를 사용하여 첫 번째 경우에 테스트 해 볼 가치가 있습니다.

ViewTreeObserver의 preDraw 메소드에서 iv.getMeasuredHeight 및 getMeasuredWidth를 사용해 볼 수 있습니다. 나는이 일을 분명히하고 레이아웃을 가지고 노는 것을 시도한다. 꽤 레이아웃에 대한 Java의 백분율을 지정할 수는 없지만 RelativeLayout.LayoutParams를 사용하고 이미지 뷰에 매개 변수를 할당하여 사용 가능한 화면 크기 및 크기에서 원하는 높이와 너비를 적절하게 조정할 수 있습니다. 이렇게하면 크기를 수동으로 제어 할 수 있습니다.

희망이 도움이됩니다.

제이슨

+0

팁 주셔서 감사합니다. 제이슨. – user465001