2014-06-12 7 views
0

진행률 표시 줄의 배율을 나타내는 간단한 사용자 지정보기가 있으며 레이아웃에 추가하면 앱이 다운됩니다.맞춤보기로 인해 앱이 다운 됨

public class ScaleBar extends View { 

    Paint linePaint = new Paint(); 

    public ScaleBar(Context context) { 
     super(context); 
     initDrawingTool(); 
    } 

    private void initDrawingTool(){ 

     linePaint.setColor(Color.WHITE); 
    } 

    @Override 
public void onDraw(Canvas canvas) { 
    int skaicius = 9; 
    int barHeight = VerticalProgressBar.getVariable(); 
    for(int i = barHeight/10; i < barHeight-barHeight/10 ; i+=barHeight/10){ 
     String testString = Integer.toString(skaicius); 
     canvas.drawText(testString, getWidth()/2-3, i, linePaint); 
     skaicius--; 
    } 
     canvas.drawText("10", getWidth()/2-10, 20, linePaint); 
     canvas.drawText("0", getWidth()/2-3, barHeight, linePaint); 
    } 
} 

레이아웃 XML :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <View.VerticalProgressBar 
     android:id="@+id/verticalRatingBar1" 
     style="?android:attr/progressBarStyleHorizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_marginLeft="5dp" 
     android:progress="10" 
     android:progressDrawable="@drawable/bluebar" /> 

    <View.ScaleBar 
     android:id="@+id/scaling" 
     android:layout_width="30dp" 
     android:layout_height="match_parent" /> 

    <View.VerticalProgressBar 
     android:id="@+id/verticalRatingBar2" 
     style="?android:attr/progressBarStyleHorizontal" 
     android:layout_width="10dp" 
     android:layout_height="match_parent" 
     android:progressDrawable="@drawable/bluebar" 
     android:progress="20" /> 
</LinearLayout> 
  • 왜 충돌 하는가?
  • 보기의 중간에 스케일을 그리는 방법은 무엇입니까? 내가 다음이 getWidth()/2을 할 경우 내가 얻을 :

10 9 8

그리고 난을 중심으로 모든 숫자를 원한다. .

사전에

편집을 주셔서 감사합니다 : 왼쪽에 난 태블릿 10.1에서 무엇을보고 "나는 이클립스에서 볼 옳은 일 9 규모의 라인과 1 누락 9 그릴되어 10

  • 근처 중앙에 숫자를 그리기에 대해? 아니면 내가이 작업을 수행 할 필요가 수동으로 getWidth()/2 -10?

enter image description here 01 2,333,869,

+0

후 당신의 로그 캣 오류 추적을 놓쳤다. –

답변

2

나는 ProgressBar의 확장 번호를 그리는해야하며, 내가 추가 할 때 그것은 응용 프로그램의 충돌이 발생 레이아웃 간단한 사용자 정의 볼 수 있습니다.

당신은 레이아웃의 생성자,

public ScaleBar(Context context, AttributeSet attrs) { 
     super(context, attrs); 
+0

도움이 된 Ok :)하지만 다른 문제가 있습니다 ... 그리는대로 그리지 않습니다. 내 질문 수정 – Martynas