對於我的項目,我需要一個更大的浮動操作按鈕(FAB)(我知道它違背了Google Material Design的原則,對此做了很多)。我知道FAB對他們有默認和迷你尺寸,但我需要更大。爲了獲得更大的尺寸,我做了繼承FAB類自定義按鈕:對於Xamarin.Android和AndroidSDK API 19和更小版本的放大浮動操作按鈕的影子填充錯誤
using System;
using Android.Content;
using Android.Content.Res;
using Android.Graphics;
using Android.Graphics.Drawables;
using Android.Runtime;
using Android.Util;
using Android.Views;
using Java.Lang;
using Android.Support.Design.Widget;
public class BiggerFloatingActionButton : FloatingActionButton
{
[Register(".ctor", "(Landroid/content/Context;)V", "")]
public BiggerFloatingActionButton(Context context) : base(context)
{
}
[Register(".ctor", "(Landroid/content/Context;Landroid/util/AttributeSet;)V", "")]
public BiggerFloatingActionButton(Context context, IAttributeSet attrs) : base(context, attrs) { }
[Register(".ctor", "(Landroid/content/Context;Landroid/util/AttributeSet;I)V", "")]
public BiggerFloatingActionButton(Context attrscontext, IAttributeSet attrs, int defStyleAttr) : base(attrscontext, attrs, defStyleAttr) { }
protected BiggerFloatingActionButton(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer) { }
protected override void OnMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
base.OnMeasure(widthMeasureSpec, heightMeasureSpec);
int width = this.MeasuredWidth;
int height = this.MeasuredHeight;
this.SetMeasuredDimension((int)(width * 1.75f), (int)(height * 1.75f));
//base.OnMeasure(width, height);
}
}
在結果,它的工作原理,但對Android的API 19陰影填充的問題和可能更低: http://image.prntscr.com/image/40f115e8e38c466196887f475ebd7726.png
雖然上Android的API 20,它看起來正常的:」 http://image.prntscr.com/image/d80110bc80d244b9be71fe30b1534188.png
有誰知道知道爲什麼前者的影響會發生我自定義的
使用FAB是FOL?低點:
var buttons = new List<BiggerFloatingActionButton>();
foreach (var item in categories)
{
var button = new BiggerFloatingActionButton(this);
var iconIdentifier = this.Resources.GetIdentifier(item.Icon, "drawable", this.ApplicationContext.PackageName);
var drawable = ContextCompat.GetDrawable(this, iconIdentifier);
button.SetImageDrawable(drawable);
buttons.Add(button);
}
var layout = this.FindViewById<LinearLayout>(Resource.Id.linear_main);
foreach(var button in buttons)
{
layout.AddView(button);
}
僅供參考,我用的是最新的Xamarin的Visual Studio版本(4.2.0.695)和最新Xamarin.Android(7.0.12)。 謝謝!編號: 這是MVCE - https://ufile.io/b691。
你能上傳一個MVCE(http://stackoverflow.com/help/mcve)在項目中演示這個問題嗎?您可以在帖子中添加指向託管服務提供商的鏈接。 –
@JonDouglas Adeed MVCE的問題。你也可以在這裏下載它:https://ufile.io/b691 – Necroqubus