增加按钮的可点击区域

时间:2015-06-02 11:09:04

标签: android button

我想增加按钮的可点击区域。但是按钮中的图像应该保持相同的大小。我也将图像设置为背景而不是源。我该怎么做?

 <Button
        android:id="@+id/backbutton"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="15dp"
        android:layout_marginTop="5dp"
        android:background="@drawable/arrow"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"

        android:textColor="@color/title_gray"
        android:textSize="14sp"


        android:visibility="visible" />

4 个答案:

答案 0 :(得分:5)

只需制作按钮的父布局(更大尺寸或可点击的尺寸),然后执行类似的点击事件 -

<LinearLayout
 android:id="@+id/backbuttonlayout"
        android:layout_width="50dp"
        android:layout_height="50dp">
<Button
        android:id="@+id/backbutton"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="15dp"
        android:layout_marginTop="5dp"
        android:background="@drawable/arrow"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"

        android:textColor="@color/title_gray"
        android:textSize="14sp"


        android:visibility="visible" />
</LinearLayout>

现在,在您的活动中,请执行 -

LinearLayout backbuttonlayout = (LinearLayout)findViewById(R.id.backbuttonlayout);

并在backbuttonlayout

上执行setOnClickListener()

答案 1 :(得分:4)

使用TouchDelegate

  

帮助程序类,用于处理希望视图具有比实际视图边界更大的触摸区域的情况。触摸区域更改的视图称为委托视图。该类应该由委托的祖先使用。要使用TouchDelegate,首先要创建一个实例,指定应该映射到委托的边界和委托视图本身。

示例

public class LaunchActivity extends Activity {

   private Button MyButton;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_launch);

       MyButton = (Button)findViewById(R.id.Button1);  //Your button ID
       View parent = findViewById(R.id.layout);        //Your Layout ID
       parent.post(new Runnable() {
            @Override
            public void run() {
                Rect delegateArea = new Rect();
                Button delegate = MyButton;
                delegate.getHitRect(delegateArea);
                delegateArea.top -= 600;           //Choose yourself
                delegateArea.bottom += 600;
                delegateArea.left -= 600;
                delegateArea.right += 600;

                TouchDelegate expandedArea = new TouchDelegate(delegateArea, delegate);
                // give the delegate to an ancestor of the view we're
                // delegating the
                // area to
                if (View.class.isInstance(delegate.getParent())) {
                    ((View) delegate.getParent())
                            .setTouchDelegate(expandedArea);
                }
            }
        });
    }
}

我认为这会帮助你

答案 2 :(得分:1)

您可以使用填充。它会将空间放在视图中(边距会将其放在外面)。

例如,以下代码将提供20dp的可点击区域,但背景将为10dp。

<Button
android:layout_width="20dp"
android:layout_height="20dp"
android:background="@drawable/your_background"
android:padding="10dp" />

答案 3 :(得分:0)

  1. 删除边距,在按钮周围使用填充。
  2. 使用一个说明为LinearLayout的按钮环绕按钮,该按钮围绕按钮填充。
  3. 将相同的onclick添加到LinearLayout作为Button。