我有一个ImageButton,点击后我会显示一个对话框,用户可以从相机中拍摄照片或从图库中选择。在从任一来源选择图像时,我将该ImageButton的setBitmap改为像这样选择的图像
SelectedPhoto = BitmapFactory.decodeFile(selectedImagePath);
DisplayPhoto.setImageBitmap(SelectedPhoto);
现在当某个人已经选择了一个图像并再次点击图像时,我想显示一个不同的对话框,其中包含第三个选项“删除照片”。
我应该检查图像按钮的哪些属性以及哪些属性?
XML中的ImageButton
<ImageButton
android:id="@+id/DisplayPhoto"
android:layout_width="95dip"
android:layout_height="95dip"
android:layout_marginRight="8dip"
android:background="@drawable/signup_photo_selector" android:scaleType="centerCrop" />
ImageButton背景XML
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/signup_form_photo_selected" android:state_pressed="true"/>
<item android:drawable="@drawable/signup_form_photo"/>
</selector>
答案 0 :(得分:1)
imgButton.getDrawable()是否有效,因为如果没有为图像按钮指定drawable,它会返回null吗?
如果没有,或者如果你不想得到整个drawable只是为了看它是否存在,你可以使用标签。 imgButton.setTag(object)允许您在图像按钮中存储任何对象...每次设置背景时,您都可以标记一个值,该值标识其背景是否已设置。您甚至可以使用不同的值来区分是使用相机还是使用库设置其背景,如果这有用的话。如果要查看图像按钮是否具有背景,请使用imgButton.getTag()来检索对象。
编辑。以下是使用setTag和getTag的方法。我将使用Integer对象作为ImageButton的标记,其中值0表示没有设置背景,值1表示已设置背景。如果要使代码更清晰,可以使用枚举或最终变量,但使用Integer将作为示例。
public class MainActivity extends Activity, implements OnClickListener {
private ImageButton imgButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imgButton = (ImageButton)findViewById(R.id.imgID);
imgButton.setTag(new Integer(0)); // no background
...
}
public void onClick(View view) {
ImageButton ib = (ImageButton)view;
int hasBackground = ib.getTag().intValue();
if(hasBackground==0) {
// imagebutton does not have a background. do not include remove option
...
} else {
// imagebutton has a background. include remove option
}
}
}