Android 应用程序崩溃,因为自定义视图

Android 应用程序崩溃,因为自定义视图,android,android-drawable,Android,Android Drawable,我有一个简单的自定义视图,它应该为progressbar绘制缩放数字,当我将它添加到布局时,它会导致应用程序崩溃 public class ScaleBar extends View { Paint linePaint = new Paint(); public ScaleBar(Context context) { super(context); initDrawingTool(); } private void initD

我有一个简单的自定义视图,它应该为progressbar绘制缩放数字,当我将它添加到布局时,它会导致应用程序崩溃

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); 
    }
}
公共类比例尺扩展视图{
油漆线条油漆=新油漆();
公共比例尺(上下文){
超级(上下文);
initDrawingTool();
}
私有void initDrawingTool(){
linePaint.setColor(颜色:白色);
}
@凌驾
公共空白onDraw(画布){
int-skaicius=9;
int barHeight=VerticalProgressBar.getVariable();
对于(int i=barHeight/10;i
布局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

我希望所有数字都居中

先谢谢你

编辑:左边是我在tablet 10.1中看到的,右边是我在Eclipse中看到的。第9刻度线和
1
缺失和
9
正在靠近
10

  • 中间的图纸编号如何?或者我必须手动执行此操作getWidth()/2
    -10

我有一个简单的自定义视图,可以为 progressbar,当我将其添加到布局时,它会导致应用程序崩溃

你错过了布局的构造器

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

发布您的logcat错误跟踪。好的,这很有帮助:)但我有另一个问题…它没有按它应该绘制的那样绘制。编辑了我的问题