Android FABカスタムボタンサイズおよび中間iconサイズ
1927 ワード
プロジェクトにはグローバルフローティングのボタンがあり、FABが似合うような気がします.
Fabは実はGoogleがMaterial Design仕様のために設計したコントロールなので、標準的な設計仕様に従っています.これは、カスタマイズ性が自然に小さくなることを意味します.たとえば、FabのSizeサイズは、mini、normal、autoのみが選択できますが、その中のiconは、属性指定で直接調整することはできません.
問題があったら、ソースコードを見てください.
コンストラクション関数から簡単に入手できます.次のコードが表示されます.
fabのサイズは実際にはdimenファイルから読み出され、内部中心iconの距離の両側のpaddingはmMaxImageSizeという変数によって決定され、その値は
この方法の弊害は,Googleが属性名を変更するとカスタムサイズが失敗することである.そのため、設計規範に従ってFABを使用することが望ましい
Fabは実はGoogleがMaterial Design仕様のために設計したコントロールなので、標準的な設計仕様に従っています.これは、カスタマイズ性が自然に小さくなることを意味します.たとえば、FabのSizeサイズは、mini、normal、autoのみが選択できますが、その中のiconは、属性指定で直接調整することはできません.
問題があったら、ソースコードを見てください.
コンストラクション関数から簡単に入手できます.次のコードが表示されます.
mMaxImageSize = (int) getResources().getDimension(R.dimen.design_fab_image_size);
private int getSizeDimension(@Size final int size) {
final Resources res = getResources();
switch (size) {
case SIZE_AUTO:
// If we're set to auto, grab the size from resources and refresh
final int width = ConfigurationHelper.getScreenWidthDp(res);
final int height = ConfigurationHelper.getScreenHeightDp(res);
return Math.max(width, height) < AUTO_MINI_LARGEST_SCREEN_WIDTH
? getSizeDimension(SIZE_MINI)
: getSizeDimension(SIZE_NORMAL);
case SIZE_MINI:
return res.getDimensionPixelSize(R.dimen.design_fab_size_mini);
case SIZE_NORMAL:
default:
return res.getDimensionPixelSize(R.dimen.design_fab_size_normal);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
final int preferredSize = getSizeDimension();
mImagePadding = (preferredSize - mMaxImageSize) / 2;
fabのサイズは実際にはdimenファイルから読み出され、内部中心iconの距離の両側のpaddingはmMaxImageSizeという変数によって決定され、その値は
R.dimen.design_fab_image_size
から読み出されるので、Fabのサイズを変更するにはdimenでこの2つの値を上書きする必要があります.
40dp
20dp
tools:override="true"
は、オーバーライドシステムの既存の値を表す.この方法の弊害は,Googleが属性名を変更するとカスタムサイズが失敗することである.そのため、設計規範に従ってFABを使用することが望ましい