【发布时间】:2012-06-14 22:22:10
【问题描述】:
这里有 2 个屏幕截图,它们的大小不同,因为左边来自模拟器,右边来自设备。应该从设备上拿走这两个,对不起。
两者都使用相同的drawable。
左:布局中设置的背景:
<ImageButton
android:id="@+id/backFromOldCurves"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/backunpressed"
android:paddingLeft="10sp"
android:paddingRight="10sp"
android:src="@drawable/navigationpreviousitem" />
右:在 onTouch on ACTION_UP 上动态设置的背景:
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
v.setBackgroundDrawable(getResources().getDrawable(R.drawable.backpressed));
}
if (event.getAction() == MotionEvent.ACTION_UP) {
v.setBackgroundDrawable(getResources().getDrawable(R.drawable.backunpressed));
onClick(v);
}
return true;
}
在 setBackgroundDrawable 中将 Drawable 转换为 NinePatchDrawable 不起作用。 我怎么能解决这个问题?
【问题讨论】:
-
我不知道这是否会对您的实际问题有所帮助,但您应该只使用
sp来调整文本大小。dip或dp应用于布局大小和填充/边距。此外,您应该真正使用Selector按钮。更多信息:stackoverflow.com/questions/3506319/… -
我对选择器感到厌烦,但它不适用于图像按钮。我想为 android:src 和 android:background 设置 2 张不同的图片。但也许我只是选错了。将再次调查。
-
Android 文档有一个选择器作为 ImageButton 的示例之一:developer.android.com/reference/android/widget/ImageButton.html。另外:“元素的顺序很重要,因为它们是按顺序评估的。这就是为什么“正常”按钮图像排在最后的原因,因为它只会在 android:state_pressed 和 android:state_focused 都被评估为 false 之后应用。”
-
是的,您可以确切地看到问题所在。我想将右箭头(android:src =“...”)留在原处,只更改背景触摸。为了使用选择器,我必须将其设置为 android:src="".
-
创建一个只改变背景而箭头保持不变的图像?
标签: android imagebutton nine-patch