Xamarin Forumのリンクhereからコードを試しましたか?私は個人的にそれを試していないが、それはあなたが動的な色を使用することを含めて欲しいものをするために使用することができるように見えます。たぶん、このような何か(私はメモリからコードの一部を書いたので、それが動作しない場合は私に知らせて):
フォーム:
public class FancyButton : Button {
/// <summary>
/// The color pressed down color property.
/// </summary>
public static readonly BindableProperty PressedDownColorProperty = BindableProperty.Create(nameof(PressedDownColor), typeof(Color), typeof(FancyButton), default(Color));
/// <summary>
/// Gets or sets the pressed down color.
/// </summary>
/// <value>The color to change to when the button is pressed down string.</value>
public Color PressedDownColor {
get { return (Color)GetValue(PressedDownProperty); }
set { SetValue(PressedDownProperty, value); }
}
}
ドロイド:
[assembly: ExportRenderer(typeof(App2.FancyButton), typeof(FancyButtonAndroid))]
namespace App2.Droid {
public class FancyButtonAndroid : ButtonRenderer {
private Color _pressedDownColor;
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Button> e) {
base.OnElementChanged(e);
Android.Widget.Button thisButton = Control as Android.Widget.Button;
FancyButton formsButton = (FancyButton)Element;
_pressedDownColor = formsButton.PressedDownColor;
thisButton.Touch += (object sender, Android.Views.View.TouchEventArgs e2) => {
if (e2.Event.Action == MotionEventActions.Down) {
thisButton.SetBackgroundColor(_pressedDownColor.ToAndroid());
} else if (e2.Event.Action == MotionEventActions.Up) {
thisButton.SetBackgroundColor(Xamarin.Forms.Color.Default.ToAndroid());
}
};
}
/// <summary>
/// Raises the element property changed event.
/// </summary>
/// <param name="sender">Sender</param>
/// <param name="e">The event arguments</param>
protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) {
base.OnElementPropertyChanged(sender, e);
FancyButton formsButton = Element as FancyButton;
if(formsButton != null && e.PropertyName == FancyButton.PlaceholderProperty.PropertyName) {
_pressedDownColor = formsButton.PressedDownColor;
}
}
}
}
ちょうど考え出し中にエラー、あなたは何を意味するのか。もう一つの質問ですが、私のdrawableはイメージではなく色になりますか?そして、もし私のボタンの色が、それが現在のページの背景色になりたいのであれば...それは動的な色のようなものですか?これはうまくいかないでしょう。ありがとう! –
@Cheesebaron - 答えはXamarinフォームではなく、Android用のXamarinのようです。これは質問が求めるものですか?もしそうなら、Xamarin.Formsタグを削除する必要があります。 –
彼はAndroidタグを持っています。したがって、Androidの答え。彼はカスタムレンダラーを持っていると言います。そのため、カスタムレンダラーでこのコードを使用して目的の効果を得ることができます。 – Cheesebaron