Tôi có một cái nhìn bao gồm TableLayout, TableRow and TextView
. Tôi muốn nó trông giống như một lưới. Tôi cần phải có được chiều cao và chiều rộng của lưới này. Các phương thức getHeight()
và getWidth()
luôn trả về 0. Điều này xảy ra khi tôi định dạng lưới một cách linh hoạt và cả khi tôi sử dụng phiên bản XML.
Làm thế nào để lấy kích thước cho một khung nhìn?
Đây là chương trình thử nghiệm của tôi, tôi đã sử dụng trong Debug để kiểm tra kết quả:
import android.app.Activity;
import android.os.Bundle;
import android.widget.TableLayout;
import android.widget.TextView;
public class appwig extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.maindemo); //<- includes the grid called "board"
int vh = 0;
int vw = 0;
//Test-1 used the xml layout (which is displayed on the screen):
TableLayout tl = (TableLayout) findViewById(R.id.board);
tl = (TableLayout) findViewById(R.id.board);
vh = tl.getHeight(); //<- getHeight returned 0, Why?
vw = tl.getWidth(); //<- getWidth returned 0, Why?
//Test-2 used a simple dynamically generated view:
TextView tv = new TextView(this);
tv.setHeight(20);
tv.setWidth(20);
vh = tv.getHeight(); //<- getHeight returned 0, Why?
vw = tv.getWidth(); //<- getWidth returned 0, Why?
} //eof method
} //eof class
getHeight()
và getWidth()
sau khi vòng đời Activity đã yêu cầu các quan điểm tự đo, nói cách khác, hãy thực hiện loại công cụ này onResume()
và đó là điều đó. Bạn không nên mong đợi một đối tượng chưa được đặt ra để biết kích thước của nó, đó là toàn bộ mánh khóe. Không cần phép thuật đề xuất dưới đây.
getHeight()/Width()
vào onResume()
không mang lại giá trị> 0 cho tôi.