public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Get the parent view
View parentView = findViewById(R.id.parent_layout);
parentView.post(new Runnable() {
// Post in the parent's message queue to make sure the parent
// lays out its children before you call getHitRect()
@Override
public void run() {
// The bounds for the delegate view (an ImageButton
// in this example)
Rect delegateArea = new Rect();
ImageButton myButton = (ImageButton) findViewById(R.id.button);
myButton.setEnabled(true);
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,
"Touch occurred within ImageButton touch region.",
Toast.LENGTH_SHORT).show();
}
});
// The hit rectangle for the ImageButton
myButton.getHitRect(delegateArea);
// Extend the touch area of the ImageButton beyond its bounds
// on the right and bottom.
delegateArea.right += 100;
delegateArea.bottom += 100;
// Instantiate a TouchDelegate.
// "delegateArea" is the bounds in local coordinates of
// the containing view to be mapped to the delegate view.
// "myButton" is the child view that should receive motion
// events.
TouchDelegate touchDelegate = new TouchDelegate(delegateArea,
myButton);
// Sets the TouchDelegate on the parent view, such that touches
// within the touch delegate bounds are routed to the child.
if (View.class.isInstance(myButton.getParent())) {
((View) myButton.getParent()).setTouchDelegate(touchDelegate);
}
}
});
}
}
7条答案
按热度按时间eufgjt7s1#
简单的解决方案:如果您有按钮的图像,然后在其周围创建透明区域(即用于触摸区域)。
灰色区域可以是透明的以增加触摸面积。
或使用TouchDelegate
mitkmikd2#
您还可以通过设置
touch delegates
来增加触摸面积Android开发者培训博客文章smdncfj33#
使用
TouchDelegate
为您的ToggleButton
作为ammar26评论你。或者
试试这个:
创建一个父布局,如
LinearLayout
或RelativeLayout
,覆盖ToggleButton
。现在将边距添加到父布局。现在,在点击父布局时,对切换按钮执行操作。
希望它能帮助你增加触摸面积为您的看法。
快乐编程
mlnl4t2r4#
而不是把触摸事件在按钮把它放在布局containg唯一的按钮..和固定的大小布局如你所愿
fcg9iug35#
增加
android:padding
的值:u5i3ibmn6#
从
parent layout
中取出margin
(代替padding
),然后在Layout
上执行操作56lgkhnf7#
可以使用触摸代理来增加触摸区域。
写一个像这样的通用函数:
并在任何你想增加命中面积的地方调用它。
其中view是父布局,btn是要增加触摸面积的控件。您也可以根据需要调整值40。