所以伙计们,
我制作了自定义布局,扩展了ViewGroup.Earlier,我制作了自定义视图,但后来我发现它不能包含像按钮这样的子节点。我确实扩展了viewgroup,因为我想添加按钮,比如线性布局,只是触摸时发光的属性。线性布局中还有其他任何东西。
WrapLayout类:
public class WrapLayout extends ViewGroup {
boolean drawGlow = false;
float glowX = 0;
float glowY = 0;
float radius = 20;
Paint paint = new Paint();
{
paint.setAntiAlias(true);
paint.setColor(3515877);
paint.setAlpha(50);
};
public WrapLayout(Context context, AttributeSet attrs) {
super( context, attrs );
setWillNotDraw(false);
}
public WrapLayout(Context context, AttributeSet attrs, int defStyle) {
super( context, attrs, defStyle );
setWillNotDraw(false);
}
public WrapLayout(Context context) {
super(context);
setWillNotDraw(false);
}
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
if(drawGlow)
canvas.drawCircle(glowX, glowY, radius, paint);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
// TODO Auto-generated method stub
}
@Override
public boolean onTouchEvent(MotionEvent event){
if(event.getAction() == MotionEvent.ACTION_DOWN){
drawGlow = true;
}else if(event.getAction() == MotionEvent.ACTION_UP)
drawGlow = false;
glowX = event.getX();
glowY = event.getY();
this.invalidate();
return true;
}
}
然后我将 activity_main.xml 文件初始化为:
<com.example.secondcustomlayout.WrapLayout
.....
>
<Button
android:id="@+id/button1"
...
</Button>
</com.example.secondcustomlayout.WrapLayout>
MainActivity :
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
结果:只有空白屏幕。
解决方案:我该怎么办?
关于
答案 0 :(得分:0)
你覆盖onLayout
,但你没有为孩子分配位置,这就是你什么也看不到的原因。如果您不想覆盖onLayout
,则应使用(extends
)框架提供的ViewGroup
具体实现之一