2011-06-30 17 views

Trả lời

72

Nếu những gì bạn đang cố gắng làm là hiển thị bố cục khác nhau tùy thuộc vào phiên bản API nào có sẵn trên thiết bị, bạn muốn sử dụng configuration qualifiers. Các chi tiết cụ thể cho alternative resources cũng được ghi lại.

Cách cơ bản nhất để làm điều đó là tạo ra một thư mục bố trí cho mỗi cấp API bạn muốn sử dụng, định dạng như sau:

res/layout/mylayout.xml  (Default) 
res/layout-v4/mylayout.xml (Android 1.6) 
res/layout-v11/mylayout.xml (Android 3.0) 

và như vậy, nơi vN là mức API. Các cấp API cụ thể có thể được tìm thấy on this page.

+0

cảm ơn vì đã trả lời bài tập này rất tốt !! – Atheh

+0

Nếu tôi chỉ có ba tệp được mô tả ở trên, nhưng tôi sử dụng Thiết bị GB, tệp nào sẽ sử dụng? (bố cục-v4 hoặc bố cục)? Tôi có phải tạo một thư mục khác cho mọi nền tảng không? Tôi có kế hoạch hỗ trợ từ GB trở đi –

+6

@ FredericYesidPeñaSánchez Nó sẽ rơi ngược về bố cục phù hợp nhất tiếp theo. Vì vậy, res/layout sẽ luôn luôn được kết hợp cuối cùng, làm cho nó cần thiết, nhưng bất kỳ khác là tùy chọn. Bạn không cần một thư mục cho mỗi nền tảng trừ khi bạn cần một cái gì đó khác nhau trên mỗi nền tảng. – Jess

3

Như Andrew Koester cho biết bạn có thể sử dụng các thư mục phiên bản khác nhau, nhưng tôi thấy điều này là rất nhiều công việc vì nó sẽ không rơi trở lại bố cục mặc định. Nếu bạn sử dụng layout-v14, nó sẽ hoạt động, nhưng bất kỳ api nào sau 14 cũng sẽ có bố cục này và bạn phải sử dụng layout-v khác? để ghi đè lên nó một lần nữa. Tất cả phụ thuộc vào những gì bạn làm, nhưng tôi thấy nếu bạn làm rất nhiều thứ có lập trình, công trình này sẽ tự hỏi:

if(Build.VERSION.SDK_INT == Build.VERSION_CODES.ICE_CREAM_SANDWICH || Build.VERSION.SDK_INT == Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1){ 
      //ex. if ics is met then do this 

     }else{ 
      //if api is not ics then do this 
     } 
Các vấn đề liên quan