Чтобы изменить значок x как свой собственный, измените изображение в init ()

етил эту ссылку и много других ссылок в стеке, но я не могу найти аналогичное решение для xamarin android:https://stackoverflow.com/a/14470930/7462031

Я реализовал решение для компоновки фреймов, но хочу, чтобы это решение использовалось во всем приложении. Итак, Clearable Edittext выглядел интересно, но библиотека деталей droid недоступна для xamarin, поэтому мне интересно, есть ли у кого-нибудь решение для этой проблемы, если вы любезно поможете справке. !

 Aaron Thompson06 сент. 2017 г., 10:23
Библиотека 'drioidparts', которую вы видели, является частью общего проекта, который вы нашли на githubgithub.com/droidparts/droidparts/tree/master/droidparts-misc Вы могли бы преобразовать этот проект в Xamarin
 G.hakim06 сент. 2017 г., 11:06
@AaronThompson Я на самом деле пытался преобразовать код в xamarin, но он не работает должным образом, я не могу найти некоторые вещи, на которые я даже гуглил, но я не могу найти что-то полезное, можете ли вы помочь немного больше у меня есть пара вопросов и было бы очень полезно, если бы вы могли ответить на них. Спасибо
 Aaron Thompson06 сент. 2017 г., 11:10
Я думаю, что лучшим вариантом было бы использовать верхний ответ, предложенный @Jaydeep Khamar, это может быть не самое элегантное решение, но вам не нужно будет конвертировать весь Java-проект в C #, чтобы он работал
 G.hakim06 сент. 2017 г., 11:20
да, я думаю, что я должен сделать это в любом случае спасибо за помощь человека! @AaronThompson

Ответы на вопрос(1)

Решение Вопроса

это может быть не лучшим решением, но я думаю, что это единственное решение для Xamarin.Android, доступное для этого:

 public class ClearableEditext : EditText
{
    Context mContext;
    Drawable imgX;

    public ClearableEditext(Context context) : base(context)
    {
        init(context, null);
    }
    public ClearableEditext(Context context, Android.Util.IAttributeSet attrs) : base(context, attrs)
    {
        init(context, attrs);
    }
    public ClearableEditext(Context context, Android.Util.IAttributeSet attrs, int defStyleAttr) : base(context, attrs, defStyleAttr)
    {
        init(context, attrs);
    }
    public ClearableEditext(Context context, Android.Util.IAttributeSet attrs, int defStyleAttr, int defStyleRes) : base(context, attrs, defStyleAttr, defStyleRes)
    {
        init(context, attrs);
    }

    public void init(Context ctx, Android.Util.IAttributeSet attrs)
    {
        mContext = ctx;
        imgX = ContextCompat.GetDrawable(ctx, Android.Resource.Drawable.PresenceOffline);
        imgX.SetBounds(0, 0, imgX.IntrinsicWidth, imgX.IntrinsicHeight);
        manageClearButton();
        this.SetOnTouchListener(new TouchHelper(this, imgX));
        this.AddTextChangedListener(new TextListener(this));
    }

    public void manageClearButton()
    {
        if (this.Text.ToString().Equals(""))
            removeClearButton();
        else
            addClearButton();
    }
    public void addClearButton()
    {
        this.SetCompoundDrawables(this.GetCompoundDrawables()[0],
                this.GetCompoundDrawables()[1],
                imgX,
                this.GetCompoundDrawables()[3]);
    }
    public void removeClearButton()
    {
        this.SetCompoundDrawables(this.GetCompoundDrawables()[0],
                this.GetCompoundDrawables()[1],
                null,
                this.GetCompoundDrawables()[3]);
    }
}

public class TouchHelper : Java.Lang.Object, View.IOnTouchListener
{
    ClearableEditext Editext;
    public ClearableEditext objClearable { get; set; }
    Drawable imgX;
    public TouchHelper(ClearableEditext editext, Drawable imgx)
    {
        Editext = editext;
        objClearable = objClearable;
        imgX = imgx;
    }
    public bool OnTouch(View v, MotionEvent e)
    {
        ClearableEditext et = Editext;

        if (et.GetCompoundDrawables()[2] == null)
            return false;
        // Only do this for up touches
        if (e.Action != MotionEventActions.Up)
            return false;
        // Is touch on our clear button?
        if (e.GetX() > et.Width - et.PaddingRight - imgX.IntrinsicWidth)
        {
            Editext.Text = string.Empty;
            if (objClearable != null)
                objClearable.removeClearButton();

        }
        return false;
    }
}

public class TextListener : Java.Lang.Object, ITextWatcher
{
    public ClearableEditext objClearable { get; set; }
    public TextListener(ClearableEditext objRef)
    {
        objClearable = objRef;
    }

    public void AfterTextChanged(IEditable s)
    {

    }

    public void BeforeTextChanged(ICharSequence s, int start, int count, int after)
    {

    }

    public void OnTextChanged(ICharSequence s, int start, int before, int count)
    {
        if (objClearable != null)
            objClearable.manageClearButton();
    }
}

Чтобы изменить значок x как свой собственный, измените изображение в init ()

Ваш ответ на вопрос