6

我有一个ToggleButton. 我想有更多的地方点击这个按钮。如果我添加layout_widthlayout_height,图像看起来很糟糕。我也尝试过使用android:padding,但对我没有帮助。

为了方便用户,需要它。

在此处输入图像描述

4

6 回答 6

3

用于TouchDelegate您的ToggleButtonas ammar26 已评论您。

或者

试试这个:

制作一个类似于LinearLayoutRelativeLayout覆盖ToggleButton. 现在为该父布局添加边距。

现在,在单击该父布局时,对切换按钮执行操作。

希望它能帮助您增加视图的触摸区域。

快乐编码。

于 2012-10-17T09:28:55.833 回答
3

简单的解决方案:如果您有按钮的图像,则在其周围创建透明区域(即用于触摸区域)。

灰色区域可以是透明的,以增加触摸区域。

在此处输入图像描述

或使用TouchDelegate

于 2012-10-17T10:56:22.937 回答
3

您还可以通过设置touch delegates Android 开发者培训博客文章来增加触控区域

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);
                } 
            } 
        }); 
    } 
} 
于 2015-02-26T06:43:41.770 回答
2

不要将触摸事件放在按钮中,而是将其放在包含唯一按钮的布局中。并根据您的意愿固定布局的大小

于 2012-10-17T09:16:26.640 回答
2

增加 的值android:padding

<SeekBar android:id="@+id/seek" android:layout_width="0dip"
android:layout_height="wrap_content" android:layout_weight="1" 
android:paddingTop="5dp" android:paddingBottom="5dp"
android:progressDrawable="@drawable/green_scrubber_progress_horizontal_holo_ligh‌​t"
android:thumb="@drawable/thumb" />
于 2014-05-28T09:04:33.433 回答
0

取你的margin(place of padding) ,然后对你Buttonparent layoutLayout

mLayout.setonTouchListener(View.onTouchListener{
     // here your working code 
});
于 2012-10-17T07:31:42.923 回答