2011-02-07 6 views
0

Android에서 그래프를 그리려고합니다. 그래프를 현재 화면 크기로 확대하기를 원합니다. 그래서 상수에 명시 적으로 설정하는 대신 그래프를 포함 할 크기 인 LinearLayout을 얻습니다. 그러나 액티비티의 onCreate() 크기를 가져올 수 없다는 문제가 있으므로 재정의 된 onSizeChanged()이있는 사용자 정의 LinearLayout을 사용합니다. 나는 그것을 다음과 같은 레이아웃에 포함시킵니다 :그래프를 그려 결과 이미지를 볼 수 없습니다.

view class="com.nnevod.loggraph.graph$GraphDisplayLayout" 
    android:layout_height="fill_parent" 
    android:id="@+id/linearLayout1" 
    android:layout_width="fill_parent" 
    android:layout_weight="1" 
    android:background="@color/White" 

나는 각괄호를 생략했습니다.

오버라이드 된 o nSizeChanged()에서 뷰의 크기를 읽고 많은 그래프 예제에서 설명한대로 모든 작업을 수행합니다. 비트 맵이 생성되고 그래프 드로잉 클래스에 전달되어 ImageView가 생성되고 비트 맵으로 변환 한 다음 사용자 정의 LinearLayout에 추가합니다.

그래프의 이미지가 보이지 않는 문제가 있습니다. 그러나 HierarchyViewer으로 검사하려고하면 이미지가 표시됩니다. 코드 onSizeChanged()에서 활동 코드 onCreate()으로 코드를 잘라내어 측정 된 값 대신 사전 설정된 크기를 사용하면 모든 것이 잘 표시됩니다.

그래서 제 질문은 제가 잘못하고있는 것입니까? 나는 어느 쪽이든 사용자 정의 onSizeChanged()에서 틀린 컨텍스트를 사용하고 있거나 거기에서 뷰를 업데이트 할 수 없다는 가정을 했었는데 측정 된 차원을 액티비티에 전달해야하고 일부에서는 비트 맵의 ​​첨부를 수행해야한다. 활동 방법의 컨텍스트 부분에서 필자는 활동의 컨텍스트 사용을 포함하여 사용 가능한 모든 컨텍스트를 사용하려고 시도했지만 아무런 소용이 없었습니다.

필요한 경우 더 많은 코드를 제공합니다.

답변

1

한 번 비슷한 문제가 있었는데 계층 뷰어의 역할은 requestLayout()입니다. 그래서, 나는 아마 어딘가에 그것을 부르는 것을 잊었다 고 들었다. 그러나 나는 그렇게 생각하지 않는다. 나중에 비슷한 상황이 버그로보고 됨으로써 requestLayout()을 어딘가에 호출하는 방법을 찾는 문제를 해결할 수 있음을 발견했습니다.

실제로 조건에 따라 (임의의보기를 여기저기서 추가하거나 그림을 업데이트하는) 실제로 작동했기 때문에 이상했습니다. 어쨌든, 결국 필자는 필자가 필요로하는 것을 직접 그리는 커스텀 뷰를 만드는 것을 선호했다. (그리고 onMeasure 후에 드로잉이 일어나기 때문에 적응 형 드로잉을 만드는 데 아무런 문제가 없다.)

(재미는 그래프에 대해 다시입니다!)

참조 (1)(2).

관련 문제