2012-04-14 2 views
1

여러 화면 크기/밀도/등 디자인을 알아 내려고하고있어. 나는 "dp"가 나의 대답이라고 생각했지만 그것이 그렇게 될 것이라고 생각했던 방식으로 작동하지 않는다.Android : 디자인 확장 너비

는 여기에 내가 할 노력하고있어 무엇 :

내가 정적으로 유지 메뉴 항목에 대한 머리글과 바닥 글 섹션이있다. 그런 다음 ScrollView가 2 사이에 있습니다. ScrollView 내에서 다양한 정보를 표시하는 여러 개의 "블록"이 있습니다. 그 블록을 항상 화면의 전체 너비로 확장하고 싶습니다. 적절한 1 : 1 -> 높이 : 너비 스케일을 유지하기 위해 해당 블록의 높이를 적절하게 확장해야합니다. 또한 TextViews/Images/Buttons/등을 확장하여 블록 내에서 위치를 유지하려고합니다. 블록 높이가 화면에 비해 너무 커지면 ScrollView가 나타납니다. 잘 맞으면 괜찮습니다. 주로 너비를 조절하고 필요한 경우 사용자가 스크롤 할 수있게하려고합니다. 화면이 넓은 얻는 경우에

은 현재 블록 정말 다양한 얻을 수 있지만 그들에 맞게 높이를 조절하지 않습니다.

가 여기 내 XML 레이아웃 코드가 어떻게 생겼는지의 기본 (readabilities를 위해 간체) 개요입니다 . 또한 각 블록은 다른 크기 일 수 있습니다. 나는 "25 %를 차지한다"해결책을 찾고 있지 않다. 블록은 상당히 복잡하고 완전히 다른 레이아웃을 가지고 있습니다. 달성

<LinearLayout> 
    <RelativeLayout>Header stuff</RelativeLayout> 

    <ScrollView> //height and width = match_parent width lower priority than header/footer 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="???" //Had been using a specified "dp" value but that didn't work like I thought. What goes here? 
     > 
       Block#1 with lots of TextViews, ImageViews and Buttons...etc 
     </RelativeLAyout> 

     <RelativeLayout> 
       Block#2 
     </RelativeLAyout> 

     <RelativeLayout> 
       Block#3... etc 
     </RelativeLAyout> 

    </ScrollView> 

    <RelativeLayout>Footer stuff</RelativeLayout> 

</LinearLayout> 

답변

0

방법 중 하나는 '완벽한'1 :보기 1의 비율 (또는 다른 미리 정의 된 비율) 그것의 사용자 정의 확장을 작성하고 onMeasure() 메소드를 오버라이드 (override)하는 것입니다. 귀하의 경우이 같은 onMeasure() 방법을 찾고 뭔가가있는 SquareRelativeLayout을 할 수 있습니다 :

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    int width = MeasureSpec.getSize(widthMeasureSpec); 
    setMeasuredDimension(width, width); 
} 

편집 : 사용자 정의 비율을 원하는 경우 , 당신은 어딘가에을 정의하고이처럼보기 측정 할 수

float ratio = 0.5f; 
@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    int width = MeasureSpec.getSize(widthMeasureSpec); 
    setMeasuredDimension(width, ratio*width); 
} 

자신 만의 XML 속성을 만드는 방법을 알고 있다면 ratio 속성을 추가하여 거기에서 가져올 수 있습니다. 즉, 각각의 다른 비율에 대해 새보기를 만들 필요가 없습니다.

+0

차갑다. 나는 그것을 더 깊이 조사해야 할 것이다. 나는 그것이 반드시 그것이 "정사각형"이되기를 원하지는 않는다. 나는 나의 질문에서 그것을 잘못 설명했을지도 모른다. 2 : 1 비율 또는 3 : 2 비율을 가질 수 있습니다. 블록이 전체 너비를 차지하고 높이가 적절하게 확장되도록 높이를 적절하게 확장하기 만하면됩니다. – user1269977

+0

@ user126977 :이 방법을 확장하면 맞춤 비율 속성을 설정할 수있는보기를 만들 수 있습니다. 내 대답을 업데이트하겠습니다. – Jave