public class ViewgroupActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myviewgroup my= new myviewgroup(this);
setContentView(my);
MyView myview;
}
}
class myviewgroup extends ViewGroup
{
MyView myview;
public myviewgroup(Context context)
{
super(context);
this.initOtherComponent(context);
}
public void initOtherComponent(Context context)
{
Button aBtn = new Button(context); //定义了一个按钮
aBtn.setId(1);
aBtn.setText("a btn");
this.addView(aBtn);
myview=new MyView(context);//定义了一个自定义的view
myview.setId(3);
this.addView(myview);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b)
{
int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
View child = getChildAt(i);
switch (child.getId()) {
case 1:
Log.d("MyViewGroup", "btn1 setting");
child.setVisibility(View.VISIBLE);
child.measure(r - l, b - t);
child.layout(0, 0, child.getMeasuredWidth(), child
.getMeasuredHeight());
break;
case 3:
Log.d("MyViewGroup", "myview");
child.setVisibility(View.VISIBLE);
child.measure(r - l, b - t);
child.layout(0, 100, child.getMeasuredWidth(),child.getMeasuredHeight() + 100); //显示不出来myview
break;
}
}
}
}
//自定义的view
class MyView extends View
{
public MyView(Context context)
{
super(context);
System.out.println("myview ffff fist");
}
protected void onDraw(Canvas canvas)
{
Paint paint=new Paint();
paint.setColor(Color.RED);
paint.setStyle(Style.FILL_AND_STROKE);
Rect rect=new Rect(40,10,240,410);
Rect rectbox;
canvas.drawRect(rect, paint);
System.out.println("myview fist");
}
}
为什么自定义的myview显示不出来,而button显示出来了,在显示myview时,什么时候调用ondraw()函数,谢谢各位了
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myviewgroup my= new myviewgroup(this);
setContentView(my);
MyView myview;
}
}
class myviewgroup extends ViewGroup
{
MyView myview;
public myviewgroup(Context context)
{
super(context);
this.initOtherComponent(context);
}
public void initOtherComponent(Context context)
{
Button aBtn = new Button(context); //定义了一个按钮
aBtn.setId(1);
aBtn.setText("a btn");
this.addView(aBtn);
myview=new MyView(context);//定义了一个自定义的view
myview.setId(3);
this.addView(myview);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b)
{
int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
View child = getChildAt(i);
switch (child.getId()) {
case 1:
Log.d("MyViewGroup", "btn1 setting");
child.setVisibility(View.VISIBLE);
child.measure(r - l, b - t);
child.layout(0, 0, child.getMeasuredWidth(), child
.getMeasuredHeight());
break;
case 3:
Log.d("MyViewGroup", "myview");
child.setVisibility(View.VISIBLE);
child.measure(r - l, b - t);
child.layout(0, 100, child.getMeasuredWidth(),child.getMeasuredHeight() + 100); //显示不出来myview
break;
}
}
}
}
//自定义的view
class MyView extends View
{
public MyView(Context context)
{
super(context);
System.out.println("myview ffff fist");
}
protected void onDraw(Canvas canvas)
{
Paint paint=new Paint();
paint.setColor(Color.RED);
paint.setStyle(Style.FILL_AND_STROKE);
Rect rect=new Rect(40,10,240,410);
Rect rectbox;
canvas.drawRect(rect, paint);
System.out.println("myview fist");
}
}
为什么自定义的myview显示不出来,而button显示出来了,在显示myview时,什么时候调用ondraw()函数,谢谢各位了
解决方案 »
- android4.0.4 插vga显示不正常
- notification实时更新问题
- android应用的用户使用情况统计如何做?
- 手游进入黄金期 安卓开发收入将逆转iOS
- Android程序员目前全国各地工资待遇怎么样?
- 有没有人出现过这种问题在模拟器上跑的时候强行退出,然后跑了几次,代码没变,有没问题了?
- 真心搞不定了,画了一个Path,然后在path里面平铺图像。怎么将path变成bitmap或是什么东西,在线等!!!!
- 删除listview其中一个列表项,下面的列表项向上移动的效果要怎么实现??
- Eclipse开发android的时候有没有能快速在activity中初始化控件呢
- AndroidEventManager 希望大牛扶正
- GPS获取城市名字问题~
- Android初学者求助
Log.d("MyViewGroup", "myview");
child.setVisibility(View.VISIBLE);
child.measure(r - l, b - t);
System.out.println("~~~~~~~~~~~~3~~~~~~"+child.getMeasuredWidth());
System.out.println("~~~~~~~~~~~~3~~~~~~"+child.getMeasuredHeight());看看 这2个log 就知道为什么不显示了
Log.d("MyViewGroup", "myview");
child.setVisibility(View.VISIBLE);
child.measure(r - l, b - t);
System.out.println("~~~~~~~~~~~~3~~~~~~"+child.getMeasuredWidth());
System.out.println("~~~~~~~~~~~~3~~~~~~"+child.getMeasuredHeight());这才输出0吧
onlayout
ondraw你还得再看
这么说linearlayout是viewgroup的派生类,所以已经重写了onmeasure()是吧。。
问一下random.nextInt() >>> 1是什么意思,random.nextInt() 是产生随机数,但>>> 1是什么意思,谢了。