以前のLプレビューでは、FAB(フローティングアクションボタン)を使用するためにコードに追加する以下のような例がいくつかありました。
しかし、残念ながら、setOutlineメソッドがサポートされなくなったため、同じコードを使用してFABを実装することはできませんが、代替メソッド 'fab.setOutlineProvider(ViewOutlineProvider);'に置き換えられたようです。誰かがこれを使用する方法を説明できますか?...
私が見逃しているのはおそらく本当に単純なことですが、どんな助けでも大歓迎です。
// 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);
@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);
あたり ビューシャドウとアウトライントレーニングのカスタマイズ :
Outline クラスのメソッドを使用して、角が丸い楕円形および長方形のアウトラインを作成できます。ビューのデフォルトのアウトラインプロバイダーは、ビューの背景からアウトラインを取得します。ビューが影を落とさないようにするには、そのアウトラインプロバイダーをnullに設定します。
したがって、ViewOutlineProvider
はoutline
パラメータでsetOval(0, 0, size, size)
を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);
}
すべてのビューには、OutlineオブジェクトとViewOutlineProvider(V.O.P)オブジェクトがあります。名前が示すように、viewoutlineproviderは間接的にビューにアウトラインを提供します。
ビューが行うことは、アウトラインオブジェクトをV.O.Pに渡し、V.O.Pがそれを更新することです。
したがって、VOPのgetOutlineメソッドにビューのOutlineオブジェクトがパラメーターとして含まれているので、それを更新するだけです。
ViewOutlineProvider viewOutlineProvider = new ViewOutlineProvider() {
@Override
public void getOutline(View view, Outline outline) {
outline.setOval(0, 0, view.getWidth(), view.getHeight());
}
};
fab.setOutlineProvider(viewOutlineProvider);