我正在更改运行时扩展Android height
的{{1}}的{{1}}和width
,如下所示:
CustomView
此代码位于View
构造函数中。
另外,我的 @Override
public void onGlobalLayout() {
if(!initialized) {
int containerHeight = instance.getHeight();
int containerWidth = instance.getWidth();
myView.getLayoutParams().height = (int) (containerHeight * HEIGHT_RATIO);
myView.getLayoutParams().width = (int) (containerWidth * WIDTH_RATIO);
instance.getViewTreeObserver().removeGlobalOnLayoutListener(this);
initialized = true;
}
}
container view
如下:
CustomView
结果如下:
我指定的onMeasure()
和 @Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// maximum width we should use
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
setMeasuredDimension(width, height);
}
与绿色矩形的大小相同。
我的问题是:为什么我的自定义视图(红色矩形)的实际大小与我在width
中输入的大小不同?
答案 0 :(得分:0)
不确定您正在使用哪个对象进行观看,但您可能会尝试这样的事情:
CustomViewget.Window()。setLayout(370,480); //控制宽度和高度
答案 1 :(得分:0)
我的问题出在CustomView
的绘图中。在onDraw()
中,我使用了width
的{{1}}和height
而不是canvas
本身。
答案 2 :(得分:0)
调用时可能无法正确计算大小,因此您可能需要将代码放在处理程序中并在post上运行,以便在UI线程上的所有其他内容完成后完成。请尝试以下代码。
Handler handler = new Handler();
handler.post(new Runnable() {
public void run() {
//check sizes and update sizes here
});