Tôi đang tự hỏi cách đo kích thước của chế độ xem. Trong trường hợp của tôi, nó là aan Absolute Layout. Tôi đã đọc các câu trả lời liên quan đến những câu hỏi đó nhưng tôi vẫn chưa hiểu. Tôi khá mới để lập trình vì vậy có lẽ nó chỉ là tôi. ;)Nhận chiều rộng/chiều cao của bố cục trong Android
Đây là mã của tôi:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AbsoluteLayout layoutbase = (AbsoluteLayout) findViewById(R.id.layoutbase);
drawOval();
}
public void drawOval(){ //, int screenWidth, int screenHeight){
AbsoluteLayout layoutbase = (AbsoluteLayout) findViewById(R.id.layoutbase);
int screenWidth = layoutbase.getWidth();
int screenHeight = layoutbase.getHeight();
Log.i("MyActivity", "screenWidth: " + screenWidth + ", screenHeight: " +screenHeight);
Coordinates c = new Coordinates(BUTTONSIZE,screenWidth,screenHeight);
...some code ...
((ViewGroup) layoutbase).addView(mybutton, new AbsoluteLayout.LayoutParams(BUTTONSIZE, BUTTONSIZE, c.mX, c.mY));
mybutton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showText(mybutton);
}
});
}
public void showText(View button){
int x = findViewById(LAYOUT).getWidth();
int y = findViewById(LAYOUT).getHeight();
Toast message = Toast.makeText(this, "x: " + x , Toast.LENGTH_SHORT);
message.show();
}
Lệnh getWidth()
công trình lớn trong showText()
nhưng nó không trong drawOval()
. Tôi biết có vẻ hơi khác một chút nhưng tôi cũng đã sử dụng phiên bản int x = findViewById(LAYOUT).getWidth();
trong drawOval()
và x/y luôn là 0
. Tôi không thực sự hiểu tại sao dường như không có chiều rộng/chiều cao ở điểm trước đó. Ngay cả khi tôi thực sự vẽ một Nút trên Bố cục tuyệt đối, getWidth()
trả lại 0
. Oviously tôi muốn đo kích thước trong drawOval()
.
Tôi sẽ đánh giá cao bất kỳ trợ giúp nào.
Cảm ơn!
Lưu ý rằng 'AbsoluteLayout' bị phản đối và không bao giờ nên được sử dụng. sử dụng Bố cục độc lập với mật độ thay thế! –
hi, cảm ơn. nhưng tôi có thể định vị các yếu tố hoàn toàn trong bất kỳ loại Bố cục nào khác không? – mayhem
Không, nhưng để thiết kế một cái gì đó hoàn toàn về cơ bản có nghĩa là bạn đang thiết kế cho một kích thước màn hình/mật độ. Bạn sẽ có thể đạt được kết quả mong muốn bằng cách sử dụng một cái gì đó như LinearLayout (ví dụ) và các giá trị đơn vị mật độ độc lập ("dp" hoặc "sp" thay vì "px"). –