Класс настраиваемой кнопки более android Button в Xamarin. android - PullRequest
0 голосов
/ 27 мая 2020

Я хочу создать свой собственный класс Button в android, который обрабатывает все операции android Button, такие как создание, добавление к макету и щелчок. Я добился создания и добавления макета, но я не уверен, как добавить событие щелчка из моего класса оболочки. Ниже приведен фрагмент кода до того, чего я добился.

public class MyButton
{
    private string vText = "MyButton";
    private Activity vActivityContainer;

    private Button vButton;

    public MyButton(Object pContainer)
    {
        vActivityContainer = (Activity)pContainer;
    }

    public void addButton(Object pViewGroup)
    {
        vButton = (Button)createButton();
        Android.Views.ViewGroup layout = (Android.Views.ViewGroup)pViewGroup;
        layout.AddView(vButton);
    }

    private Object createButton()
    {

        Button button = new Button(vActivityContainer);
        setButtonProperties(button);
        return button;
    }

    private void setButtonProperties(Object pButtonObj)
    {
        Button b = (Button)pButtonObj;
        b.Text = vText;
    }


    public void setText(String pText)
    {
        this.vText = pText;
    }
}

Теперь, когда я создаю экземпляр класса MyButton, я могу динамически создавать кнопку android в моем макете. Ниже приведен код.

MyButton myb = new MyButton(Activity);
myb.setText("Tap Me");
myb.addButton(layout);

Описанным выше способом я создал класс-оболочку для создания кнопки Android. Теперь я хочу прикрепить прослушиватель щелчков ко всем кнопкам, которые я создаю с помощью своего класса оболочки. Но я не уверен, как этого добиться. Вкратце, чтобы достичь чего-то вроде ниже. Не стесняйтесь спрашивать, если запрос непонятен.

1 Ответ

0 голосов
/ 27 мая 2020

Если вы хотите реализовать IOnClickListener кнопки. Есть два пути.

Вариант 1

Вы можете напрямую реализовать интерфейс в Activity

public class xxxActivity :Activity,View.IOnClickListener
myb.SetOnClickListener(this);

public void OnClick(View v)
        {
           //...
        }

Option 2

Вы можете определить класс и реализовать интерфейс

public class OnButtonClickListener : Java.Lang.Object, View.IOnClickListener
    {
        Button CurrentButton;
        public OnButtonClickListener(Button button)
        {
            CurrentButton = button;
        }

        public void OnClick(View v)
        {
           //...
        }
    }
myb.SetOnClickListener(new OnButtonClickListener(myb));
...