2014-11-21 81 views
0

我正在嘗試將輪廓設置爲視圖(浮動操作按鈕)。 重點在於它曾經工作了一段時間,所以在代碼和錯誤方面都沒有問題,並且它完美地顯示了陰影。然後它不再顯示一個影子。 我想我已經檢查了所有與此有關的事情,並且找不到問題。輪廓提供程序不再工作

所以這是我的代碼,我一直在努力:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     ImageButton fab = (ImageButton) findViewById(R.id.fab); 

     ViewOutlineProvider outlineProvider = new ViewOutlineProvider() { 
      @TargetApi(Build.VERSION_CODES.LOLLIPOP) 
      @Override 
      public void getOutline(View view, Outline outline) { 
       int fabSize = view.getHeight(); 
       //int fabSize = getResources().getDimensionPixelSize(R.dimen.fab_big); 
       outline.setOval(0, 0, fabSize, fabSize); 
      } 
     }; 
     fab.setOutlineProvider(outlineProvider); 
} 

我的工廠是一個簡單的ImageButton有波紋爲背景,裏面56 * 56dp的圖像SRC(加號)。

有什麼建議嗎?

編輯:幾天後,我要說的是,輪廓提供商僅適用於Button而不是爲ImageButton ...在幾個小時內進一步測試的到來。

+0

有一個簡單的庫,很容易實現這一點;檢查我的答案在這裏:http://stackoverflow.com/a/27159634/1891118 – 2014-11-26 22:02:46

回答

0

在你getOutline方法,你應該設置剪輯勾勒真:

public void getOutline(View view, Outline outline) { 
    int fabSize = view.getHeight(); 
    outline.setOval(0, 0, fabSize, fabSize); 
    view.setClipToOutline(true); 
}