Проверка свойства ImageButton - PullRequest
1 голос
/ 30 октября 2011

У меня есть кнопка ImageButton, при нажатии которой я показываю диалоговое окно, в котором пользователи могут либо сделать снимок с камеры, либо выбрать из галереи.При выборе изображения из любого источника я устанавливаю BitBitmap для этого ImageButton для изображения, выбранного следующим образом:

SelectedPhoto = BitmapFactory.decodeFile(selectedImagePath);
DisplayPhoto.setImageBitmap(SelectedPhoto);

Теперь, когда кто-то уже выбрал изображение и снова щелкает изображение, я хочу показать другой диалог, который содержитТретий вариант «Удалить фото».

Какое свойство кнопки изображения следует проверять и против чего?

ImageButton в XML

<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 Background 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 Ответ

1 голос
/ 30 октября 2011

Будет ли imgButton.getDrawable () работать, так как он возвращает значение NULL, если для кнопки изображения не было назначено рисование?

Если нет, или если вы не хотите получать рисование целиком, просто посмотритеэто там, вы можете использовать тег.imgButton.setTag (объект) позволяет вам сохранять любой объект внутри кнопки изображения ... каждый раз, когда вы устанавливаете его фон, вы можете пометить значение, которое определяет, был ли установлен его фон.Вы даже можете использовать разные значения, чтобы различать, устанавливаете ли вы его фон с помощью камеры или из галереи, если это полезно.Если вы хотите увидеть, имеет ли кнопка изображения фон или нет, используйте imgButton.getTag () для извлечения объекта.

Редактировать.Вот как бы вы использовали setTag и getTag.Я буду использовать объект Integer в качестве тега ImageButton, где значение 0 указывает, что фон не установлен, а значение 1 указывает, что фон установлен.Вы можете использовать enum или final переменные, если хотите сделать код немного понятнее, но использование 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
    }
  }
}
...