2012-08-13 4 views
0

여기 왜 이렇게 많은 스레드가 있는지 살펴 보았습니다. 왜 이런 일이 발생했는지 이해하려고 시도했지만 그저 내 머리를 감쌀 수 없습니다.GUI 요소의 백분율로 크기 조정

내 RelativeLayout에는 메뉴 (layParentBottom) 위에있는 4 개의 HorizontalScrollViews (HSV)가 있습니다.

이 메뉴 위에 4 개의 HSV를 균등하게 배치하고 싶습니다.

내 계산에 따르면, 장치 높이를 가져 와서 메뉴 높이를 빼고 4로 나누면 개별 HSV 높이를 얻을 수 있습니다.

그러나 각 HSV의 높이를 설정하면 크기보다 커집니다.

(참고 :. display.getHeight은() 나는 480X800 장치입니다 정확한 치수를 반환하고, 나는 그것을 반환 deviceHeight 인쇄하는 경우 800) 여기

내 코드입니다 :

RelativeLayout menuLayout = (RelativeLayout)findViewById(R.id.menuLayout); 
    HorizontalScrollView row1 = (HorizontalScrollView)findViewById(R.id.row1); 
    HorizontalScrollView row2 = (HorizontalScrollView)findViewById(R.id.row2); 
    HorizontalScrollView row3 = (HorizontalScrollView)findViewById(R.id.row3); 
    HorizontalScrollView row4 = (HorizontalScrollView)findViewById(R.id.row4); 

    //get current device dimensions 
    Display display = getWindowManager().getDefaultDisplay(); 
    deviceWidth = display.getWidth(); //returns 480 
    deviceHeight = display.getHeight(); //returns 800 

    int menuHeight = deviceWidth/5; // 480/5 = 96 
    int remainingSpace = deviceHeight - menuHeight; // 800 - 96 = 704 
    int rowHeight = (int) (remainingSpace/4); // 704/4 = 176 

    menuLayout.getLayoutParams().height = menuHeight; 

    row1.getLayoutParams().height = rowHeight; 
    row2.getLayoutParams().height = rowHeight; 
    row3.getLayoutParams().height = rowHeight; 
    row4.getLayoutParams().height = rowHeight; 

이 코드를 실행하면 각 행이 너무 커서 하단의 메뉴 아래에 푸시됩니다. getHeight()를 실행하면. (176), 그러나 분명히 아닙니다 (4 행이 너무 커서 메뉴 위의 공간에 맞출 수 없기 때문입니다).

누구든지이 문제에 관해 밝힐 수 있습니까? 정말 고맙습니다!

답변

0

기기 화면의 일부를 차지하는 상단에 메뉴 막대가 있다고 생각하지 않았습니다. 내 해결책은 주 레이아웃 높이를 fill_parent로 한 다음 주 레이아웃의 높이를 얻는 것입니다. display.getHeight() 값 대신이 값을 사용합니다.

0

ViewGroup.LayoutParams 중첩 된 서브 클래스의 LayoutParams에 대한 "상수 필드 값" 공공 정적 최종 INT의 FILL_PARENT 상수 값 : 그것은보기는만큼 큰해야 말한다

-1 (0xffffffff를) 부모 빼기 패딩,하지만 당신은 크기 조정 된 별도의 집합을 포함하도록 전체 집합 바운딩 부모 안에 다른 "부모"를 넣어야 할 수도 있습니다.

2

여기에 실제로 LinearLayout을 사용해야합니다. android:layout_weight 특성을 사용하여 백분율을 사용할 수 있습니다. 일이 짝수 인 경우 1을 사용하고 그렇지 않으면 android:weightSum="100"을 설정 한 다음 무게에 정수 (백분율)를 사용할 수 있습니다.

예. 부모가 android:weightSum="100" 인 경우 android:layout_weight="25"은 25 %입니다.

관련 문제