ฉันยังใหม่กับการพัฒนาแอนดรอยด์และการอ้างอิงถึงการขยายมุมมองจากไฟล์ xml ของเลย์เอาต์ ฉัน googled และค้นหาคู่มือการพัฒนา แต่ก็ยังไม่สามารถเข้าใจความหมายของมัน หากใครบางคนสามารถให้ตัวอย่างที่ง่ายมากมันก็จะได้รับการชื่นชมมาก
ฉันยังใหม่กับการพัฒนาแอนดรอยด์และการอ้างอิงถึงการขยายมุมมองจากไฟล์ xml ของเลย์เอาต์ ฉัน googled และค้นหาคู่มือการพัฒนา แต่ก็ยังไม่สามารถเข้าใจความหมายของมัน หากใครบางคนสามารถให้ตัวอย่างที่ง่ายมากมันก็จะได้รับการชื่นชมมาก
คำตอบ:
เมื่อคุณเขียนเค้าโครง XML มันจะถูกขยายโดย Android OS ซึ่งโดยทั่วไปหมายความว่ามันจะถูกแสดงผลโดยการสร้างวัตถุมุมมองในหน่วยความจำ เรียกว่าเงินเฟ้อโดยปริยาย (ระบบปฏิบัติการจะขยายมุมมองให้คุณ) ตัวอย่างเช่น
class Name extends Activity{
public void onCreate(){
// the OS will inflate the your_layout.xml
// file and use it for this activity
setContentView(R.layout.your_layout);
}
}
LayoutInflater
นอกจากนี้คุณยังสามารถขยายมุมมองที่ชัดเจนโดยใช้ ในกรณีนี้คุณต้อง:
LayoutInflater
View
ตัวอย่างเช่น
LayoutInflater inflater = LayoutInflater.from(YourActivity.this); // 1
View theInflatedView = inflater.inflate(R.layout.your_layout, null); // 2 and 3
setContentView(theInflatedView) // 4
findViewById
ใช้วัตถุมุมมองที่มีอยู่แล้วในหน่วยความจำและเหตุผลเดียวที่คุณทำคือการได้รับการอ้างอิงไปยังวัตถุเฉพาะนั้น (ไม่ว่าจะเปลี่ยนหรือรับข้อมูลออกจากมัน)
"Inflating" มุมมองหมายถึงการนำโครงร่าง XML และแยกวิเคราะห์เพื่อสร้างมุมมองและวัตถุกลุ่มมุมมองจากองค์ประกอบและแอตทริบิวต์ที่ระบุภายในแล้วเพิ่มลำดับชั้นของมุมมองและกลุ่มมุมมองเหล่านั้นไปยังมุมมองหลัก เมื่อคุณเรียกใช้ setContentView () จะแนบมุมมองที่สร้างจากการอ่าน XML เข้ากับกิจกรรม คุณยังสามารถใช้ LayoutInflater เพื่อเพิ่มมุมมองไปยัง ViewGroup อื่นซึ่งอาจเป็นเครื่องมือที่มีประโยชน์ในหลาย ๆ สถานการณ์
การขยายเป็นกระบวนการของการเพิ่มมุมมอง (.xml) ให้กับกิจกรรมบนรันไทม์ เมื่อเราสร้าง listView เราจะขยายรายการแต่ละรายการแบบไดนามิก หากเราต้องการสร้างกลุ่มดูที่มีหลายมุมมองเช่นปุ่มและมุมมองข้อความเราสามารถสร้างได้เช่น:
Button but = new Button();
but.setText ="button text";
but.background ...
but.leftDrawable.. and so on...
TextView txt = new TextView();
txt.setText ="button text";
txt.background ... and so on...
จากนั้นเราต้องสร้างเลย์เอาต์ที่เราสามารถเพิ่มมุมมองด้านบน:
RelativeLayout rel = new RelativeLayout();
rel.addView(but);
และตอนนี้ถ้าเราต้องการเพิ่มปุ่มที่มุมขวาและมุมมองข้อความที่ด้านล่างเราต้องทำงานมากมาย ก่อนอื่นโดยการทำให้คุณสมบัติมุมมองเป็นอินสแตนซ์แล้วใช้หลายข้อ จำกัด ใช้เวลานาน
Android ทำให้ง่ายสำหรับเราในการสร้าง. xml อย่างง่ายและออกแบบสไตล์และคุณสมบัติใน xml จากนั้นก็ขยายได้ทุกที่ที่เราต้องการโดยไม่ต้องเจ็บปวดจากการตั้งข้อ จำกัด ทางโปรแกรม
LayoutInflater inflater =
(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View menuLayout = inflater.inflate(R.layout.your_menu_layout, mainLayout, true);
//now add menuLayout to wherever you want to add like
(RelativeLayout)findViewById(R.id.relative).addView(menuLayout);
ฉันคิดว่าที่นี่ "ขยายมุมมอง" หมายถึงการดึงไฟล์ layout.xml วาดมุมมองที่ระบุในไฟล์ xml นั้นและ POPULATING (= พองตัว) พาเรนต์วิวกรุ๊ปที่มีมุมมองที่สร้างขึ้น
นิยามคนธรรมดาสำหรับเงินเฟ้ออาจจะแปลงรหัส XML เป็นรหัส Java เพียงวิธีที่จะเข้าใจเช่นหากเรามีแท็กใน XML ระบบปฏิบัติการจะต้องสร้างวัตถุ Java ที่สอดคล้องกันในหน่วยความจำดังนั้นผู้อ่านที่อ่าน XMLtags และสร้างวัตถุที่สอดคล้องกันใน Java
เนื่องจากเราสร้าง UI เป็น XML แต่มุมมองวัตถุเป็นสิ่งที่เราแสดงดังนั้นเราจำเป็นต้องแปลง xml เป็นวัตถุมุมมองดังนั้นการขยายตัวหมายความว่าเราแปลง xml เป็นวัตถุมุมมองเพื่อให้สามารถแสดงผลได้เราต้องการบริการที่เรียกว่า และให้ xml กับมันและมันจะถูกแปลงให้คุณ