奇怪的行为?自定义布局与普通布局

时间:2015-10-24 20:25:25

标签: android layout

最好显示图像,标准相对布局:

enter image description here

自定义相对布局:

enter image description here

它还阻止我将其他小部件添加到我的自定义布局中,我不知道为什么?

这是我的自定义类的代码:

public class CustomLayout extends RelativeLayout {
private Paint brush;

public CustomLayout (Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
protected void onFinishInflate() {
    super.onFinishInflate();

    init();
}

private void init() {
    brush = new Paint();
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    brush.setColor(Color.BLACK);
    canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), brush);
}
}

那么为什么这样讨厌我?我必须指出,当应用程序启动时,每个方面都会正确显示。但实际上我无法使用设计器在我的自定义布局中添加小部件或定位内容。

1 个答案:

答案 0 :(得分:0)

嗯,Designer不是运行时,因此它绘制了一个近似的"你拥有的版本。如果有的话,您可能会在这里透支过多,不同之处在于您的自定义布局的子项无效并发出重绘,这会导致文本视图重新绘制其内容(因此,为什么你在运行时看到它确定)。在Designer中,这种情况不太可能发生(或者只发生一次,但由于没有生命周期,TextView在一次通过后没有机会重新绘制自己。

覆盖您的TextView#onDraw()并添加一些日志记录,以查看您是否正在接听电话以及拨打多少电话。我打赌会有一些。

最后,请记住,设计师与运行时不同,否则使用起来会非常慢。