Android Touch делегирует только триггеры только в правом нижнем углу

#java #android #android-touch-event

#Ява #Android #android-сенсорное событие

Вопрос:

Я пытаюсь увеличить область касания значка в своем приложении, не увеличивая его размер. Я использую делегат касания для достижения этой цели. Но проблема в том, что область касания увеличивается только справа внизу, хотя я дал слева и сверху. Увеличилась только область касания справа внизу. Когда я нажму на правую верхнюю часть, он не будет активирован.

Есть ли что-нибудь еще, что нужно указать, чтобы оно работало должным образом?

 findViewById(R.id.theme_parent).post(new Runnable() {  @Override  public void run()  {  Rect delegateArea = new Rect();  darkTheme.setEnabled(true);  darkTheme.getHitRect(delegateArea);  delegateArea.right  = convertDpToPixel(18);  delegateArea.left  = convertDpToPixel(8);  delegateArea.top  = convertDpToPixel(18);  delegateArea.bottom  = convertDpToPixel(18);  TouchDelegate touchDelegate = new TouchDelegate(delegateArea, darkTheme);  if(View.class.isInstance(darkTheme.getParent()))  {  ((View) darkTheme.getParent()).setTouchDelegate(touchDelegate);  }  } });  

Комментарии:

1. Вы хотите вычесть слева и сверху.

2. Почему это так? Можете ли вы объяснить подробнее?

3. Поля left , top , right , и bottom в a Rect в основном являются координатами для каждой стороны в системе координат. Чтобы расширить прямоугольник влево, вам нужно вычесть из его левой координаты. Аналогично и для вершины, поскольку ноль находится на вершине. Имеет ли это смысл?