Установите onClickListener в пользовательском представлении Android - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь создать простую библиотеку для кнопки, внутри папки библиотеки, которую я создал ниже class

 public class SimpleImageButton extends AppCompatImageView implements AppCompatImageView.OnClickListener{

    public Context mContext;
    Activity activity;

    public SimpleImageButton (Context context) {
        super(context);
        mContext = context;
        setCustomTypeface(context, null);

    }

    public SimpleImageButton (Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext = context;
        setCustomTypeface(context, attrs);

    }

    public SimpleImageButton (Context context, AttributeSet attrs, int defStyleAttr) 
    {
        super(context, attrs, defStyleAttr);
        mContext = context;
        setCustomTypeface(context, attrs);
    }

    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    private void setCustomTypeface(Context context, AttributeSet attrs)  {
        if(isInEditMode())
            return;
        TypedArray a = context.obtainStyledAttributes(attrs, 
        android.support.v7.appcompat.R.styleable.TextAppearance);
        setBackground(ContextCompat.getDrawable(mContext, 
    R.drawable.applogo_ads));
        a.recycle();

    }
   public void onClick(View view) {
        // here i have some functions to execute
    }
}

и мой основной класс в папке приложения

   SimpleImageButton imgBtn= (SimpleImageButton )findViewById(R.id.clickButton);

imgBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               imgBtn.onClick(view);
              // without this line how can i reach to onclick() of simpleImageButton class
            }
        });

так что просыпается нормально, когда я нажимаю кнопку. но я хочу, чтобы кнопка библиотеки работала напрямую, без функции onClick внутри основной деятельности, при нажатии кнопки следует напрямую перенаправить в класс SimpleImageButton метод onclcik

Я очень новичок в переполнении стека, если какие-либо ошибки в грамматике / способе задать вопрос, не обращайте внимания. спасибо.

1 Ответ

0 голосов
/ 12 сентября 2018

Используйте setOnClickListener (this) внутри конструктора вашего представления.

public SimpleImageButton (Context context) {
        super(context);
        mContext = context;
        setCustomTypeface(context, null);
        setOnClickListener(this);
    }
...