2010-02-07 11 views
1

나는이 질문을하기가 싫다. 웬일인지 나는 혼자서 그것을 이해할 수 없다. 내 애플 리케이션 및 TextView 정의한 사용자 지정보기 포함하는 세로 LinearLayout 있습니다. 내 사용자 지정보기를 화면의 맨 위에 맞추고 TextView를 화면 맨 아래에 맞 춥니 다. 불행히도, XML 파일의 속성에 어떤 변경을가하더라도 에뮬레이터를 실행할 때 내 사용자 지정보기가 항상 세로 가운데에있는 것처럼 보입니다.LinearLayout 내의 뷰 요소 정렬

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:gravity="top"> 

    <CustomView 
    android:id="@+id/customID" 
     android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       tileSize="24" 
       android:focusableInTouchMode="true" android:layout_gravity="top"/> 

    <TextView 
    android:id="@+id/text" 
     android:text="@string/droidtactoe_layout_text" 
     android:visibility="visible" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:textSize="24sp" android:textColor="#00000000" android:layout_gravity="bottom"/> 

</LinearLayout> 

답변

1

첫째, 주어진 규칙은 ("나는 화면 하단에 정렬하려면 화면의 상단과 텍스트 뷰에 정렬 내 사용자 정의보기를하고 싶습니다"XML은 다음과 같다), 나는 더 간단 할 것이므로 RelativeLayout을 추천 할 것이다. 에서 android:layout_alignParentTop="true"을 사용하고 TextView에서 android:layout_alignParentBottom="true"을 사용하고 gravity/layout_gravity 개를 덤프하면됩니다.

여전히 CustomView에 오작동이있는 경우 임시적으로 Button 또는 다른 것으로 교체하십시오. Button이 예상대로 레이아웃되면 CustomView 구현에 문제가 있습니다. 실제 View에서 상속하는 경우 (예 : CustomViewTextView의 하위 클래스 임) 물건을 배치하는 데 필요한 모든 기능을 상속해야합니다. CustomView이 단순히 View의 하위 클래스 인 경우 무시하거나 호출해야하는 몇 가지 사항이있을 수 있습니다. 나는 사용자 정의 View 하위 클래스를 만들지 않았으며, LinearLayout과 같은 하위 클래스 만 만들었으므로 사용자가 누락 된 부분을 100 % 확신하지는 못합니다.

1

고마워요! 그것은 CustomView의 문제였습니다. 나는 Snake 데모에서 Overridden View의 수정 된 버전을 사용하고있었습니다. 이 데모에서는 View의 높이와 너비에 따라 onSizeChanged에 정의 된 X 및 Y 오프셋을 사용했습니다. 그런 다음 onDraw 메서드의 오프셋을 사용하여 그렸던 객체의 치수를 채 웁니다.

지금은 나에게 이해가 안되는 이유 때문에 레이아웃의 너비와 높이를 설정하는 onDraw b/c에 작성된 내용에 따라보기의 너비와 높이가 제한된다고 가정했습니다. ~ wrapContent. 그러나 onSizeChanged에 전달되는 폭과 높이는 전체 화면의 크기입니다. 결과적으로, 이러한 오프셋은 사용자 정의보기가 전체 화면을 채우도록 만들었습니다. 오프셋을 제거하고 문제가 해결 된 것 같습니다.

다시 한 번 감사드립니다.