我的自定义组件: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);
------解决思路----------------------