ImageButton属性检查

时间:2011-10-30 15:38:54

标签: android background alertdialog imagebutton android-alertdialog

我有一个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>

1 个答案:

答案 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
    }
  }
}