#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
в aRect
в основном являются координатами для каждой стороны в системе координат. Чтобы расширить прямоугольник влево, вам нужно вычесть из его левой координаты. Аналогично и для вершины, поскольку ноль находится на вершине. Имеет ли это смысл?