TableLayout, TableRow and TextView
ผมมีมุมมองที่สร้างขึ้นจาก ฉันต้องการให้มันดูเหมือนตาราง ฉันต้องการความสูงและความกว้างของกริดนี้ วิธีการgetHeight()
และgetWidth()
ผลตอบแทน 0 มักเกิดขึ้นเมื่อฉันจัดรูปแบบตารางแบบไดนามิกและเมื่อฉันใช้รุ่น XML
วิธีดึงมิติข้อมูลสำหรับมุมมอง
นี่คือโปรแกรมทดสอบที่ฉันใช้ใน Debug เพื่อตรวจสอบผลลัพธ์:
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()
และgetWidth()
หลังจากวงจรชีวิตของกิจกรรมได้ขอให้มุมมองวัดตัวเองกล่าวอีกนัยหนึ่งคือทำสิ่งต่าง ๆ ในแบบนี้onResume()
และนั่นก็คือ คุณไม่ควรคาดหวังว่าวัตถุที่ยังไม่ได้วางโครงสร้างจะรู้ขนาดของมันนั่นเป็นกลลวงทั้งหมด ไม่จำเป็นต้องใช้เวทย์มนตร์ที่แนะนำด้านล่าง
getHeight()/Width()
เข้าonResume()
ไม่ได้ให้ค่า> 0 สำหรับฉัน