Ich versuche, eine benutzerdefinierte ImageView-Klasse zu erstellen, indem ich die Android-ImageView-Klasse mit Xamarin.Android erweitere. Unten ist ein Teil des Codes in Java und eine unvollständige Implementierung in C#. Ich brauche Hilfe mit den letzten 2 Methoden.Android Image ImageView in Xamarin.Android konvertieren
ANDROID Java-Code
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.widget.ImageView;
public class IconViewView extends ImageView {
private ColorStateList tint;
public IconView(Context context) {
super(context);
}
public IconView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs, 0);
}
public IconView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context, attrs, defStyle);
}
private void init(Context context, AttributeSet attrs, int defStyle) {
TypedArray a = context.obtainStyledAttributes(
attrs, R.styleable.IconView, defStyle, 0);
tint = a.getColorStateList(R.styleable.IconView_iconTint);
a.recycle();
}
@Override
protected void drawableStateChanged() {
super.drawableStateChanged();
if (tint != null && tint.isStateful()) {
updateTintColor();
}
}
public void setColorFilter(ColorStateList tint) {
this.tint = tint;
super.setColorFilter(tint.getColorForState(getDrawableState(), 0));
}
private void updateTintColor() {
int color = tint.getColorForState(getDrawableState(), 0);
setColorFilter(color);
}
}
ANDROID Xamarin C# -Code
using Android.Content;
using Android.Content.Res;
using Android.Graphics;
using Android.Support.V4.Content;
using Android.Support.V4.Graphics.Drawable;
using Android.Util;
using Android.Widget;
namespace Example.Droid.App.Views
{
public class IconView : ImageView
{
private ColorStateList tint;
private Context context;
public IconView(Context context) :base(context)
{
Initialize(context, null, 0);
}
public IconView(Context context, IAttributeSet attrs) :
base(context, attrs)
{
Initialize(context, attrs, 0);
}
public IconView(Context context, IAttributeSet attrs, int defStyle) :
base(context, attrs, defStyle)
{
Initialize(context, attrs, defStyle);
}
void Initialize(Context mContext, IAttributeSet attrs, int defStyle)
{
context = mContext;
TypedArray a = context.ObtainStyledAttributes(attrs, Resource.Styleable.IconView, defStyle, 0);
tint = a.GetColorStateList(Resource.Styleable.IconView_iconTint);
a.Recycle();
}
protected override void DrawableStateChanged()
{
base.DrawableStateChanged();
if (tint != null && tint.IsStateful)
UpdateTintColor();
}
private void UpdateTintColor() {
/* I NEED HELP HERE */
}
public void SetColorFilter(ColorStateList tint) {
/* I NEED HELP HERE */
}
}
}
Ich brauche Hilfe mit diesen Methoden in Xamarin C#
private void UpdateTintColor() {
/* I NEED HELP HERE */
}
public void SetColorFilter(ColorStateList tint) {
/* I NEED HELP HERE */
}
Sie müssen das override-Schlüsselwort zu allen überschriebenen Methoden hinzufügen, und Sie können Verwenden Sie im Allgemeinen das Schlüsselwort C# 'base', wobei Java' super' verwendet. – Jason
Danke Jason. Was ist hier?'Private void UpdateTintColor() { /* Ich brauche Hilfe HIER */ } public void SetColorFilter (ColorStateList Tönung) { /* I NEED HERE */ HELP}' – Bismarck