我想增加按钮的可点击区域。但是按钮中的图像应该保持相同的大小。我也将图像设置为背景而不是源。我该怎么做?
<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" />
答案 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)