フローティング アクション ボタンを使用しています (サード パーツ ライブラリを使用せずに)
fab は mdpi および hdpi デバイスでは正常に表示されますが、ldpi デバイスでは独特の楕円形として表示されます
参考までに、ここにスクリーンショットを示します-
- これは、mdpi デバイスで正常にレンダリングされる fab です。
- これは、ldpi デバイスで楕円としてレンダリングされた fab です。
メイン レイアウトには、fab レイアウトを含めるための include 要素があります。fab レイアウトには、 drawable として背景が含まれています。background=@drawable/fab_drawable
A. res/drawable 内の fab_drawable.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="8px">
<layer-list>
<item>
<shape android:shape="oval">
<solid android:color="#14000000"/>
<padding
android:bottom="1px"
android:left="0px"
android:right="1px"
android:top="1px"
/>
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#15000000"/>
<padding
android:bottom="1px"
android:left="0px"
android:right="1px"
android:top="1px"
/>
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#16000000"/>
<padding
android:bottom="1px"
android:left="0px"
android:right="1px"
android:top="1px"
/>
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="#17000000"/>
<padding
android:bottom="1px"
android:left="0px"
android:right="1px"
android:top="1px"
/>
</shape>
</item>
</layer-list>
</item>
<item android:id="@+id/fab_drawable_shape">
<shape android:shape="oval" >
<solid android:color="#404952" />
</shape>
</item>
<item android:drawable="@drawable/onboarding_selector"/>
B. drawable-v21 の fab_drawable.xml
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight" >
<item>
<shape android:shape="oval" >
<solid android:color="?android:colorAccent" />
</shape>
</item>
C.私のbasefragmentでは、ビルドがlollipopかどうかを確認してから、このクリッピングコードを使用しています
ViewOutlineProvider fabOutlineProvider = new ViewOutlineProvider() {
@Override
public void getOutline(View view, Outline outline) {
int diameter = getResources().getDimensionPixelSize(
R.dimen.fab_diameter);
outline.setOval(0, 0, diameter, diameter);
}
};
mComposeFabButtonView.setOutlineProvider(fabOutlineProvider);
mComposeFabButtonView.setClipToOutline(true);
D. ファブ ボタンの直径の寸法は、すべてのデバイスで 60sp です。