2011-01-01 4 views
228

Tôi mới phát triển Android và tiếp tục xem qua các tham chiếu đến Tăng lượt xem từ tệp xml bố cục. Tôi googled và tìm kiếm các hướng dẫn phát triển nhưng vẫn không thể nhận thức được ý nghĩa của nó. Nếu ai đó có thể cung cấp một ví dụ rất đơn giản, nó sẽ được nhiều đánh giá cao.Làm cách nào để tăng lượt xem từ tệp xml?

Trả lời

217

Khi bạn viết bố cục XML, nó sẽ được tăng cao bởi hệ điều hành Android về cơ bản có nghĩa là nó sẽ được hiển thị bằng cách tạo đối tượng xem trong bộ nhớ. Hãy gọi rằng lạm phát tiềm ẩn (hệ điều hành sẽ làm tăng lượt xem cho bạn). Ví dụ:

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); 
    } 
} 

Bạn cũng có thể tăng lượt xem một cách rõ ràng bằng cách sử dụng LayoutInflater. Trong trường hợp đó bạn phải:

  1. Nhận một thể hiện của các LayoutInflater
  2. Xác định XML để tăng
  3. Sử dụng trở View

Ví dụ:

LayoutInflater inflater = LayoutInflater.from(YourActivity.this); // 1 
View theInflatedView = inflater.inflate(R.layout.your_layout, null); // 2 and 3 
+21

nếu thổi phồng = hiển thị thì sử dụng onDraw() chính xác là gì? – PypeBros

+0

@sylvainulg, R.id.view được sử dụng để thay đổi các thuộc tính của phần tử xml và thổi phồng có thể làm tương tự. lạm phát đặc biệt hữu ích trong chế độ xem tùy chỉnh. Để thổi phồng toàn bộ tệp xml, setContentView quen thuộc của lớp Hoạt động được sử dụng. Chế độ xem phải thổi phồng từng Chế độ xem theo cách thủ công bằng cách sử dụng LayoutInflater object.inflate(). Hoạt động có Vòng đời. Thay vào đó, Chế độ xem có một chu trình vẽ. inflater là công cụ hữu ích với chế độ xem tùy chỉnh thay vì sử dụng bố cục predifiend trong tệp XML. –

+0

@Cristian Xin vui lòng, bạn có nghĩ rằng bạn có thể cho tôi một số lời khuyên/ý tưởng ở đây http://goo.gl/E37NSu – eddy

136

"Inflating" một khung nhìn có nghĩa là lấy XML bố cục và phân tích nó để tạo ra khung nhìn và viewgroup ob jects từ các phần tử và các thuộc tính của chúng được chỉ định bên trong, và sau đó thêm phân cấp của các khung nhìn và các nhóm xem đó vào ViewGroup cha. Khi bạn gọi setContentView(), nó gắn các khung nhìn mà nó tạo ra từ việc đọc XML tới hoạt động đó. Bạn cũng có thể sử dụng LayoutInflater để thêm các khung nhìn vào một ViewGroup khác, đây có thể là một công cụ hữu ích trong nhiều trường hợp.

+19

nghe giống như mô tả chính xác hơn cho tôi. – PypeBros

+4

Tôi vẫn còn một chút bối rối bởi thuật ngữ "lạm phát" bản thân mình. (Nếu tôi chỉ có thể ngừng hình dung không khí đi vào một cái gì đó). Nhưng có lẽ điều này sẽ giúp: Tôi vừa chạy chương trình giải nén tại một thiết bị đầu cuối Ubuntu và nhận thấy thuật ngữ: "lạm phát: X/Y/z.xml." Tôi cho rằng nó thực sự là một khái niệm tương tự. –

+4

"Tăng tốc" trong trường hợp này có nghĩa là khung công tác đang lấy mô tả bố cục từ XML và điền phân cấp khung nhìn với các đối tượng Xem thực tế. Vì vậy, đó là lạm phát trong ý nghĩa điền vào bố trí. – jjb

24

Lạm phát là quá trình thêm một cái nhìn (.xml) để hoạt động trên runtime. Khi chúng ta tạo một listView, chúng ta sẽ tự động tăng cường từng mục của nó. Nếu chúng ta muốn tạo một ViewGroup với nhiều khung nhìn như nút và textview. Chúng ta có thể tạo ra nó như

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... 

Sau đó, chúng ta phải tạo ra một bố cục mà chúng ta có thể thêm quan điểm trên

RelativeLayout rel = new RelativeLayout(); 

rel.addView(but); 

Và bây giờ nếu chúng ta muốn thêm nút trên phải góc và TextView ở phía dưới. Chúng ta phải làm rất nhiều việc. Đầu tiên với các thuộc tính khung nhìn và thứ hai chúng ta phải áp dụng nhiều ràng buộc. Đó là một công việc khó khăn và tốn thời gian.

Android giúp chúng tôi dễ dàng tạo một đơn giản .xml và thiết kế kiểu dáng và thuộc tính của nó trong xml và chỉ đơn giản là thổi phồng nó ở bất cứ nơi nào chúng ta cần mà không có sự nhầm lẫn về thiết lập ràng buộc và đặt nó theo chương trình.

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); 
+0

Tôi thích cách bạn mô tả lạm phát thực sự là gì, bằng cách hiển thị cách bạn thực hiện theo cách thủ công. – Daniel

4

Tôi nghĩ rằng đây "lạm phát một cái nhìn" có nghĩa là lấy file Layout.xml vẽ một cái nhìn cụ thể trong tập tin xml và Populating (= lạm phát) các ViewGroup phụ huynh với tạo View.

0

Vì chúng tôi tạo giao diện người dùng thành XML nhưng đối tượng xem là những gì chúng tôi hiển thị nên chúng tôi cần chuyển đổi xml thành đối tượng xem để tăng cường nghĩa là chúng tôi đang chuyển đổi xml thành đối tượng xem để có thể hiển thị. được gọi là dịch vụ bố trí inflator và cung cấp cho nó một xml và nó sẽ được chuyển đổi cho bạn.