2016-07-19 2 views
0

로딩 스피너를 캔버스에 넣으려고합니다. 생성자에서 :내보기의 Android ProgressBar

this.progressBar = new ProgressBar(context, null, Resource.Attribute.progressBarStyle); 

그리고 OnDraw에 :

protected override void OnDraw(Canvas canvas) 
{ 
    base.OnDraw(canvas); 

    // other code to draw other stuff... 

    this.progressBar.Draw(canvas); 
} 

이 표시되지 않습니다. 내가 놓친 게 있니? Width 속성을 검사했지만 디버깅 중에는 0이지만 여전히 해결 방법을 모르겠습니다.

내 클래스는 View

+0

상속보기를 배치하려면 간단한 View가 아닌 ​​ViewGroup 또는 모든 '레이아웃'클래스가 필요합니다. –

답변

0

당신은 뷰 그룹 또는 레이아웃 (예를 들어, FrameLayout이)에서 당신이 클래스를 확장 할 필요가 확장, 다음 초기화하는 동안 당신은 당신의 진행 표시 줄에 addView 메서드를 호출해야합니다.

간단한 ViewGroup을 확장하는 경우 추가적으로 onMeasure 및 onLayout 메서드를 재정 의하여 진행 위젯의 컴퓨팅 크기를 제공하고 적절하게보기 그룹에 배치해야합니다.

Here is a tutorial (자세한 정보는 Xamarin 사용자 용)

+0

뷰를 'RelativeLayout'으로 변경하고 뷰를 추가했지만 여전히 작동하지 않습니다 :'this.progressBar = new ProgressBar (context, null, Resource.Attribute.progressBarStyle); this.AddView (this.progressBar);'. TextView와 같은 다른 것을 추가하려고 할 때 작동합니다. – Darius

+0

레이아웃 매개 변수를 제공 했습니까? –

+0

예 :'progressBar.LayoutParameters = new ViewGroup.LayoutParams (100, 100); 그리고 아직 아무것도 없습니다. 하지만 배경을 빨간색으로 설정하면 붉은 색 사각형이 나타납니다 .. – Darius

관련 문제