Как выполнить, нажмите на кнопку TextInputLayout EndIcon - PullRequest
2 голосов
/ 27 января 2020

Я знаю, что можно выполнить щелчок на представлении, подобном этому:

view.PerformClick()

Как мне сделать это на TextInputLayout EndIcon button?

Обновление

Проблема в том, что у меня есть куча InputLayouts и я использую функцию generi c, чтобы установить прослушиватели щелчков на них, например,

fun setTextInputLayoutListeners(
    inputLayout: TextInputLayout, editText: TextInputEditText,
    actionSet: () -> Unit,
    actionClear: () -> Unit
) {
    with (inputLayout) {
        setOnClickListener { actionSet() }
        setEndIconOnClickListener { actionClear() }
    }
    editText.setOnClickListener { actionSet() }
}

и вызвать ее с различными параметрами, подобными этому

setTextInputLayoutListeners(
    categoryInputLayout, categoryEditText, { onCategoryClick() }, { onCategoryClear() }
)
setTextInputLayoutListeners(
    dateInputLayout, dateEditText, { onDateClick() }, { onDateClear(calendar) }
)

, поэтому я ищу универсальное c решение, вроде

inputLayout.EndIcon.PerformClick()

Ответы [ 2 ]

2 голосов
/ 27 января 2020
textinput.setEndIconOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // do some code
            }
        });

надеюсь, это поможет ..

0 голосов
/ 27 января 2020
view.setOnTouchListener(new View.OnTouchListener() {
     @Override
     public boolean onTouch(View v, MotionEvent event) {
          final int DRAWABLE_LEFT = 0;
          final int DRAWABLE_TOP = 1;
          final int DRAWABLE_RIGHT = 2;
          final int DRAWABLE_BOTTOM = 3;

          if(event.getAction() == MotionEvent.ACTION_UP) {
             if(event.getRawX() >= (quantity.getRight() - quantity.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
                 // your action here
                 // For example:
                 view.getText().clear();
                 return true;
              }
          }
          return false;
      }
});
...