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()函数,谢谢各位了
解决方案 »
- Android 跨布局拖动控件的问题(已附源码,希望高手改善)
- 老鸟们求助!为什么我写的android的程序总是意外停止??新手
- 有关Chronometer的问题 在线 ,急!!!!
- 请在国内手机公司搞android系统开发的进来谈谈心得体会吧
- cygwin编译android windows SDK 出错(缺少toolchain)
- android 屏幕关闭API
- 如何取得本地地址,并在地图上标出来。
- android使用UDP的问题
- 求助 谁写过android疯狂讲义最后的那个电子拍卖系统啊?
- Avtivity以dialog形式弹出后怎么不居中而是靠右?
- 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是什么意思,谢了。