我在LinearLayout中显示了一个小图像,它的左右两边都有一些空白。我的问题是空白是不可点击的。如何在视图的左右两侧显示一个空格,使用这个额外的空格来扩展可点击区域?
<ImageButton
android:id="@+id/markReadButton"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:adjustViewBounds="true"
android:background="@android:drawable/checkbox_on_background"
android:gravity="center_vertical"
android:onClick="onMarkRead" >
</ImageButton>
这是在Google IO 2011调度应用程序中使用TouchDelegate完成的。看看这样使用它的Activity;
// Larger target triggers star toggle
final View starParent = mRootView.findViewById(R.id.header_session);
FractionalTouchDelegate.setupDelegate(starParent, mStarred, new RectF(0.6f, 0f, 1f, 0.8f));
TouchDelegate实现在这里实现。它是开源的,应该很容易导入到您的项目中。
祝你好运,希望这有助于!
我认为使用padding代替margin可以给你的项目更多的空间,同时也可以让它是可点击的。
看看这个关于边距和边距的描述:View's padding and Margin
编辑:尝试使用android:src作为图像,设置android:background="@null"并增加ImageButton对象的整体大小。在这一点上,我甚至不确定你是否需要填充。你可以根据需要修改高度和宽度,让src图像位于ImageButton的中心。
<ImageButton
android:id="@+id/markReadButton"
android:layout_width="60dp"
android:layout_height="40dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:src="@android:drawable/checkbox_on_background"
android:background="@null"
android:adjustViewBounds="true"
android:onClick="onMarkRead"
/>
只需添加布局父元素,并设置eg 20dp的宽度和高度
<RelativeLayout android:id="@+id/relativeLayoutButton"
android:layout_width="60dp"
android:layout_height="60dp"
android:paddingRight="20dp"
android:paddingLeft="20dp" >
<ImageButton
android:id="@+id/markReadButton"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:adjustViewBounds="true"
android:background="@android:drawable/checkbox_on_background"
android:gravity="center_vertical"
android:onClick="onMarkRead" >
</ImageButton>
然后设置相同的位置布局和您的图像。设置同样可点击的布局和按钮