如题
不知道怎么在XML中引用自定义的VIEW,VIEW该怎么写呢?自定义的VIEW中应该注意什么?
XML引用自定义VIEW应该注意什么?
请高手给点建议,不管复制的或者原创都行啊。我之前一直做web,刚学习Android还是喜欢用XML布局,感觉XML更像CSS+DIV。
不知道各位高手有什么建议没?

解决方案 »

  1.   

    贴一下代码供你参考XML引用自定义View<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <com.study.android.myview.MyView  
    android:id="@+id/myView"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        />
    </LinearLayout>
    自定义Viewpublic class MyView extends View {    @Override
        protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub
    super.onDraw(canvas); canvas.drawColor(Color.WHITE);
    Paint paint = new Paint(); // 反锯齿
    paint.setAntiAlias(true);
    paint.setColor(Color.BLUE);
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeWidth(3); canvas.drawCircle(40, 40, 30, paint);
    canvas.drawRect(10, 80, 70, 140, paint);
    canvas.drawRect(10, 150, 70, 190, paint);
    RectF rectF = new RectF(10, 200, 70, 230);
    canvas.drawRoundRect(rectF, 15, 15, paint); // 圆角矩形
    rectF = new RectF(10, 240, 70, 270);
    canvas.drawOval(rectF, paint);
    // 定义一个Path对象,封闭为三角形
    Path path = new Path();
    path.moveTo(10, 340);
    path.lineTo(70, 340);
    path.lineTo(40, 290);
    path.close();
    canvas.drawPath(path, paint); path = new Path();
    path.moveTo(26, 360);
    path.lineTo(54, 360);
    path.lineTo(70, 392);
    path.lineTo(40, 420);
    path.lineTo(10, 392);
    path.close();
    canvas.drawPath(path, paint); // ------------------------------
    // 设置渐变器
    Shader mShander = new LinearGradient(0, 0, 40, 60, new int[] {
    Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW }, null,
    Shader.TileMode.REPEAT);
    paint.setStyle(Paint.Style.FILL);
    paint.setShader(mShander);
    paint.setShadowLayer(45, 10, 10, Color.GRAY); // 设置阴影
    canvas.drawCircle(120, 40, 30, paint);
    canvas.drawRect(90, 80, 150, 140, paint);
    canvas.drawRect(90, 150, 150, 190, paint);
    rectF = new RectF(90, 200, 150, 230);
    canvas.drawRoundRect(rectF, 15, 15, paint); // 圆角矩形
    rectF = new RectF(90, 240, 150, 270);
    canvas.drawOval(rectF, paint);
    // 定义一个Path对象,封闭为三角形
    path = new Path();
    path.moveTo(90, 340);
    path.lineTo(150, 340);
    path.lineTo(120, 290);
    path.close();
    canvas.drawPath(path, paint); path = new Path();
    path.moveTo(106, 360);
    path.lineTo(134, 360);
    path.lineTo(150, 392);
    path.lineTo(120, 420);
    path.lineTo(90, 392);
    path.close();
    canvas.drawPath(path, paint);
        }    public MyView(Context context) {
    super(context);
        }    public MyView(Context context, AttributeSet attrs) {
    super(context, attrs);
        }
      

  2.   

    3Q。我也是这样引用的啊。就是不行。
    难道因为我没添加onDraw方法?
      

  3.   

    楼上是对的..最主要的就是
    XML: com.study.android.myview.MyView  
    JAVA: 继承View
      

  4.   

    要是自定义的view有参数,在XML里面怎么传参?