8

Đối với L Preview trước đó, có một số ví dụ như được hiển thị bên dưới để thêm vào mã của bạn để sử dụng FAB (Nút Hành động Nổi). Tuy nhiên, rất tiếc là tôi không thể sử dụng cùng mã đó để triển khai FAB do phương thức setOutline không được hỗ trợ nữa, nhưng dường như phương thức này đã được thay thế bằng phương thức thay thế 'fab.setOutlineProvider (ViewOutlineProvider);'. bất cứ ai có thể giải thích làm thế nào để sử dụng này? ...Cách sử dụng setOutlineProvider thay vì setOutline trong Lollipop

Nó có thể là một cái gì đó thực sự đơn giản mà tôi đang mất tích, nhưng bất kỳ trợ giúp sẽ được nhiều đánh giá cao.

// Outline 
int size = getResources().getDimensionPixelSize(R.dimen.fab_size); 
Outline outline = new Outline(); 
outline.setOval(0, 0, size, size); 

Button fab = (Button) findViewById(R.id.fab); 
fab.setOutline(outline); 
fab.setClipToOutline(true); 

Trả lời

27

Chỉ cần để hoàn thành câu trả lời @ianhanniballake:

Button fab = (Button) findViewById(R.id.fab); 
//Outline outline = new Outline(); 
//outline.setOval(0, 0, size, size); 
//fab.setOutline(outline); 
ViewOutlineProvider viewOutlineProvider = new ViewOutlineProvider() { 
     @Override 
     public void getOutline(View view, Outline outline) { 
      // Or read size directly from the view's width/height 
      int size = getResources().getDimensionPixelSize(R.dimen.fab_size); 
      outline.setOval(0, 0, size, size); 
     } 
    }; 
fab.setOutlineProvider(viewOutlineProvider); 
+2

Bạn cũng nên kiểm tra, trước, phiên bản hiện tại của thiết bị, vì phương pháp này chỉ được hỗ trợ sau khi Android L. – russellhoff

9

mỗi customizing view shadows and outlines training:

Bạn có thể tạo hình bầu dục và hình chữ nhật phác thảo với góc tròn bằng cách sử dụng các phương pháp trong lớp Outline. Nhà cung cấp phác thảo mặc định cho các khung nhìn có được đường viền từ nền của khung nhìn. Để ngăn chế độ xem đổ bóng, hãy đặt nhà cung cấp phác thảo của nó thành rỗng.

Vì vậy ViewOutlineProvider bạn chỉ cần gọi setOval(0, 0, size, size) trên tham số outline-getOutline():

public void getOutline (View view, Outline outline) { 
    // Or read size directly from the view's width/height 
    int size = getResources().getDimensionPixelSize(R.dimen.fab_size); 
    outline.setOval(0, 0, size, size); 
} 
+0

Làm gì chính xác? Hiển thị bóng chính xác của chế độ xem? –

+2

@androiddeveloper - đó là chính xác. Theo mặc định bóng được đúc bằng cách sử dụng các giới hạn của chế độ xem của bạn, hoạt động tuyệt vời cho các chế độ xem hình chữ nhật mờ đục lấp đầy toàn bộ giới hạn của chúng, nhưng rõ ràng là không nhiều cho (xem trong trường hợp này) Dạng xem tròn. – ianhanniballake

+0

Tôi hiểu. Vì vậy, những gì nên được sử dụng nếu tôi có một hình dạng kỳ lạ cho một cái nhìn, hoặc một cái nhìn mà thay đổi hình dạng của nó? –

Các vấn đề liên quan