Tôi nhận thấy rằng khung nhìn của ứng dụng trả về 0 cho getWidth() và getHeight() sau khi onMeasure() đã được gọi. Điều này chỉ xảy ra trên một số ít thiết bị, đối với hầu hết các thiết bị Android, mã sau hoạt động tốt. Hàm checkViewAndLoad() của tôi tải một bitmap được chia tỷ lệ phụ thuộc vào kích thước của khung nhìn.getWidth() và getHeight trả về số không sau onMeasure() (thiết bị cụ thể)
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
Log.d("widthMeasureSpec", Integer.toString(MeasureSpec.getSize(widthMeasureSpec)));
Log.d("heightMeasureSpec", Integer.toString(MeasureSpec.getSize(heightMeasureSpec)));
Log.d("viewWidth", Integer.toString(getWidth()));
Log.d("viewHeight", Integer.toString(getHeight()));
checkViewAndLoad();
}
Đây là một bản ghi của một thiết bị (Motorola Droid Razr Maxx) trả về zero cho getWidth()/getHeight() sau khi onMeasure():
09-03 20:55:58.359: D/widthMeasureSpec(29496): 540
09-03 20:55:58.359: D/heightMeasureSpec(29496): 720
09-03 20:55:58.359: D/viewWidth(29496): 0
09-03 20:55:58.359: D/viewHeight(29496): 0
Tôi cũng đã cố gắng để setMeasuredDimensions() bằng tay, nhưng bàn tay đó không ảnh hưởng đến nhật ký.
Ai đó có thể cho tôi biết những gì tôi đang làm sai ở đây, hoặc làm thế nào để có được chiều rộng/chiều cao của SurfaceView sau khi onMeasure() đã được gọi?