当前位置: 代码迷 >> Android >> 自定义View组件,该如何处理
  详细解决方案

自定义View组件,该如何处理

热度:31   发布时间:2016-04-28 03:58:14.0
自定义View组件
我的自定义组件:public class MyView extends View{



public MyView(Context context) {
super(context);
// TODO 自动生成的构造函数存根
}
public void onDraw(Canvas canvas){
super.onDraw(canvas);
Paint p=new Paint();
canvas.drawRect(0, 100, 480, 800, p);

}
我的xml文件: 用的是TableLayout布局
        <com.example.exercise_shader.MyView
            android:id="@+id/myView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>


我的主函数:package com.example.exercise_shader;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TableLayout;

public class MainActivity extends Activity implements OnClickListener{

private Button bn1;
private Button bn2;
private Button bn3;
private Button bn4;
private Button bn5;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bn1=(Button)findViewById(R.id.bn1);
        bn2=(Button)findViewById(R.id.bn2);
        bn3=(Button)findViewById(R.id.bn3);
        bn4=(Button)findViewById(R.id.bn4);
        bn5=(Button)findViewById(R.id.bn5);
        MyView myView=(MyView)findViewById(R.id.myView);

这样写模拟器为啥出不来效果,一直报错啊???
        
           
------解决思路----------------------
报什么错,把Log贴出来看看。
------解决思路----------------------
你的 layout 布局文件是 wrap_content, 而你又没有重写 onMeasue方法,所以 android 默认你的宽高为0,不进行绘制
------解决思路----------------------
主布局文件呢?发出来看看
------解决思路----------------------
画笔没有选颜色,当然没有效果。

Paint p=new Paint();
p.setColor(Color.BLUE); // <== 要选择一种颜色
canvas.drawRect(0, 100, 480, 800, p);

------解决思路----------------------
引用:
这是我的布局文件
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TableRow 
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <Button 
            android:id="@+id/bn1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="10dp"
            android:text="位图"/>
        <Button 
            android:id="@+id/bn2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="10dp"
            android:text="线性渐变"/>        
        <Button 
            android:id="@+id/bn3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="10dp"
            android:text="圆形渐变"/>
  相关解决方案