Хорошо, я думаю, что никто не дает реального ответа, чтобы решить его и упростить его. В последнее время у меня была та же проблема, и я читал все выше, я просто понятия не имел, как просто заставить ее работать. Но, наконец, я это сделал. чтобы иметь в виду! Давайте представим, что у вас есть одна целая раскладка, которая содержит ваши две маленькие кнопки, область которых должна быть расширена, поэтому вы ДОЛЖНЫ создать другую раскладку внутри вашей основной раскладки и поместить другую кнопку в только что созданную раскладку, так что в этом случае с Статическим методом вы можете дать сенсорный делегат двум кнопкам одновременно. Теперь глубже и шаг за шагом в код!
сначала вы наверняка просто найдете вид вашего MAINLAYOUT и кнопки вот так (этот макет будет удерживать нашу первую кнопку)
RelativeLayout mymainlayout = (RelativeLayout)findViewById(R.id.mymainlayout)
Button mybutoninthislayout = (Button)findViewById(R.id.mybutton)
хорошо, мы закончили нахождение основного макета и его вида кнопки, который будет содержать все, только наш onCreate()
отображающий макет, но вы должны найти его на случай, если вы захотите использовать его позже. какая ширина и высота на ваш вкус (этот новый созданный макет будет удерживать нашу вторую кнопку)
RelativeLayout myinnerlayout = (RelativeLayout)findViewById(R.id.myinnerlayout)
Button mybuttoninsideinnerlayout = (Button)findViewById(R.id.mysecondbutton)
хорошо, мы закончили поиск представлений, так что теперь мы можем просто скопировать и вставить код нашего парня, который первым ответил на ваш вопрос. Просто скопируйте этот код в вашу основную деятельность.
public static void expandTouchArea(final View bigView, final View smallView, final int extraPadding) {
bigView.post(new Runnable() {
@Override
public void run() {
Rect rect = new Rect();
smallView.getHitRect(rect);
rect.top -= extraPadding;
rect.left -= extraPadding;
rect.right += extraPadding;
rect.bottom += extraPadding;
bigView.setTouchDelegate(new TouchDelegate(rect, smallView));
}
});
}
Теперь, как использовать этот метод и заставить его работать? Вот как!
в вашем методе onCreate()
вставьте следующий фрагмент кода
expandTouchArea(mymainlayout,mybutoninthislayout,60);
expandTouchArea(myinnerlayout, mybuttoninsideinnerlayout,60);
Объяснение того, что мы сделали в этом фрагменте. Мы взяли созданный нами статический метод с именем expandTouchArea()
и дали 3 аргумента.
1-й аргумент - макет, который содержит кнопку, область которой должна быть расширена
2-й аргумент - актуальная кнопка для расширения области
3-й аргумент - область в пикселях того, насколько мы хотим увеличить область кнопки!
НАСЛАЖДАЙТЕСЬ!