2012-05-01 11 views
10

Ich habe ein kleines Android ImageButton auf einem Bildschirm, der ein Symbol darstellt. Das Problem ist, dass es schwierig ist, es zu berühren und zu aktivieren. Ich möchte nicht die Größe des Bildes selbst vergrößern, aber ich möchte die anklickbare Region erweitern und vergrößern. Wenn sich der Benutzer also nahe genug an dem Bild befindet, wird das onClick-Ereignis aktiviert. Wie kann dies geschehen, ohne OnTouch-Ereignisse für den umgebenden Bildschirmbereich zu implementieren?Android ImageButton Wie kann ein anklickbarer Bereich größer als das Bild selbst sein?

Antwort

16

Sie könnten Ihre ImageButton in eine andere ViewGroup wickeln und Padding auf die ViewGroup setzen. Dann würden Sie auf Klicks auf die ViewGroup hören. Hier ein Beispiel:

<FrameLayout 
    android:id="@+id/button_layout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="20dp" > 

    <ImageButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/my_button" 
     android:duplicateParentState="true" 
     android:clickable="false" 
     android:focusable="false" /> 

</FrameLayout> 

Sie dann für Klicks auf R.id.button_layout hören würde, und Ihre ImageButton sollten erhalten alle die gleichen Zustände (gedrückt, angeklickt, etc.) als Mutter Layout.

+0

Ich habe versucht, Polsterung links von 20-50 Dip aber das scheint nicht zu funktionieren. –

+0

Ist die Idee, Padding = "20dip" anstatt PaddingRight, PaddingLeft usw. nur zu setzen? –

+0

Dies wäre vielleicht die schnellste Technik, wenn es funktionierte, aber ich konnte es immer noch nicht bestätigen. –

0

Ich hatte eine ähnliche Situation ... Ich habe nur das Symbol mit einem relativen Layout platziert, und legte dann einen größeren Button direkt über den Anfang, der ein Zeichen verwendet, das im Normalzustand vollständig transparent ist, und fügt transluzente Farbe hinzu für gedrückt/fokussiert/etc.

+0

Wie spezifiziert man transluzente Farbe? –

+0

Ich zeichnete die Symbole (der normale Zustand ist natürlich ein leeres Quadrat ohne Farbe oder Alpha) und referenzierte alle durch eine ziehbare XML, indem ich die Schaltfläche auf die Xml ziehbar. Ich habe das nicht nur getan, um den Button größer als das Bild zu machen, aber es erlaubte mir, ein statisches Systembild für ein Telefonsymbol zu verwenden, um die Dinge auf jedem separaten Gerät einheitlich zu halten. –

+0

siehe hier: http://developer.android.com /resources/tutorials/views/hello-formstuff.html –

0

Ich bin nicht sicher, wie unser Layout konfiguriert ist, aber eine Sache, die in den Sinn kommt, ist ein relatives Layout zu verwenden. Erstellen Sie Ihr Symbol mit einem großen transparenten Hintergrund. Sie müssen sich mit dem Layout beschäftigen, um es richtig positioniert zu bekommen, aber der transparente Bereich wird auch anklickbar sein.

Verwandte Themen