Frage

Wenn ich meine Image setzen beide klickbare und fokussierbar zu sein, es funktioniert, aber ich habe keine Möglichkeit zu sagen, welches Bild fokussiert ist. Was ist der beste Weg, um es zu bekommen einen orangefarbenen Rahmen um die Ansicht zu ziehen, damit der Benutzer weiß, dass es im Fokus aktuell ist?

habe ich versucht, es in einem Linearlayout fallen und Einstellung, dass statt fokussierbarem und anklickbar zu sein, aber hatte kein Glück. Selbst wenn ich auf eine Marge setzen, gibt es nichts, um anzuzeigen, dass es ausgewählt wurde.

War es hilfreich?

Lösung

Sie können einen ziehbar mit einer Wahl als Hintergrund verwenden.

Zum Beispiel, ich habe gallery_image_bg.xml in res / ziehbar:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
          android:constantSize="true">
  <item android:state_selected="true">
    <shape android:shape="rectangle">
      <solid android:color="#E6E4E0"/>
      <stroke android:width="3dp" android:color="#F9C11E"/>
      <padding android:left="3dp"
               android:top="3dp"
               android:right="3dp"
               android:bottom="3dp" />
    </shape>
  </item>
  <item android:state_pressed="true">
    <shape android:shape="rectangle">
      <solid android:color="#E6E4E0"/>
      <stroke android:width="3dp" android:color="#F9C11E"/>
      <padding android:left="3dp"
               android:top="3dp"
               android:right="3dp"
               android:bottom="3dp" />
    </shape>
  </item>
  <item>
    <shape android:shape="rectangle">
      <solid android:color="#E6E4E0"/>
      <stroke android:width="3dp" android:color="#FFF"/>
      <padding android:left="3dp"
               android:top="3dp"
               android:right="3dp"
               android:bottom="3dp" />
    </shape>
  </item>
</selector>

Dies erzeugt drei verschiedenfarbige 3DD Linien um das Bild. Sie sind sichtbar, weil die Polsterung Kräfte das Bild in einem etwas kleineren Bereich zu machen.

in Code verwendet wie folgt:

image.setBackgroundResource(R.drawable.gallery_image_bg)

Andere Tipps

Die schnelle Lösung ist es, einen Hörer zu verwenden, die auf den Klick reagieren, und legen Sie eine orange Grenze auf der Imageview ...

imageView.setOnClickListener(listener)

Aber Sie müssen, dass die Image Artikel für alle tun. Zumindest können sie den gleichen Hörer teilen.

Die lange Lösung ist Ihre eigene Ansicht, erstreckt Image zu implementieren, die ihre eigene orange Grenze in Reaktion auf einen Klick zieht.

Ich nehme an, Sie dies wie Radio-Buttons arbeiten möchten, wo auf einem Image klicken, wird die Grenze von dem zuvor ausgewählten Image entfernen? Sie werden also die gemeinsamen Hörer müssen einen Verweis auf das aktuell ausgewählte Image zu erhalten, die dann „abgewählt“ werden kann, wenn ein neuer Image geklickt wird.

Späte Antwort, aber Sie können auch eine LayerDrawable für die Bildquelle verwenden. Dann sind Sie zu verwirren nicht herum haben mit dem Hintergrund, Polsterung, etc.

LayerDrawable d = new LayerDrawable(new Drawable[]{new BitmapDrawable(myBmp), getResources().getDrawable(R.drawable.my_selector_list)});
imageView.setImageDrawable(d);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top