2010-07-23 15 views
22

Kann mir jemand sagen, wie man die BildButton, um das Bild genau anzupassen. Dies ist der Code, den ich ausprobiert, aber das Bild ist an der Position, die ich mit android:scaleType Ort, aber ich kann nicht platziert Lage, die Größe der Image, pls mir helfen, dieses Problem bei der Beseitigung zu reduzieren out ... der Code, der i ...ImageButton in Android

versuchte
<ImageButton> 
android:id="@+id/Button01" 
android:scaleType="fitXY" // i have tried all the values for this attr 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:cropToPadding="false" 
android:paddingLeft="10dp" 
android:src="@drawable/eye"> // this is the image(eye) 
</ImageButton> 
+0

Was möchten Sie genau erreichen? Könntest du einen Plan oder etwas ähnliches auf Paint/Gimp machen und uns zeigen? weil ich nicht wirklich sehe was du außer zu sehen hast. thx – Sephy

+0

Hi Saphy ,, Thx für Ihre Antwort, meine Zweifel ist, wie die Größe der Bildschaltfläche in Android, wenn möglich pls zeigen Sie mir mit einem Schnipsel –

+0

Ich verstehe nicht, was Sie über die Größenänderung ... – Sephy

Antwort

3

Du bist wahrscheinlich auf die Schaltfläche, um die Größe programmatisch gehen zu müssen. Sie müssen explizit das Bild in Ihrem onCreate laden() -Methode, und die Größe dort auf den Button:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    ImageButton myButton = (ImageButton) findViewById(R.id.button); 
    Bitmap image = BitmapFactory.decodeResource(R.drawable.eye); 
    myButton.setBitmap(image); 
    myButton.setMinimumWidth(image.getWidth()); 
    myButton.setMinimumHeight(image.getHeight()); 
    ... 
} 

Es ist nicht garantiert, gemäß den Spezifikationen für setMinimumX (da die Breite und Höhe immer noch abhängig ist auf der Elternansicht), aber es sollte für fast jede Situation ziemlich gut funktionieren.

10

Sie das Bild mit der Eigenschaft "src"

android:src="@drawable/eye"> 

Verwendung "background" Eigenschaft statt "src" Eigenschaft setzen:

android:background="@drawable/eye" 

wie:

<ImageButton 
    android:id="@+id/Button01" 
    android:scaleType="fitXY" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:cropToPadding="false" 
    android:paddingLeft="10dp" 
    android:background="@drawable/eye"> // this is the image(eye) 
</ImageButton> 
29
android:background="@drawable/eye" 

arbeitet automatisch.

android:src="@drawable/eye" 

war, was ich mit all den Problemen der Größenänderung des Bildes, die die Breite und Höhe des Knopfes ...

+0

Sie rocken. Danke! rettete mir eine Menge Zeit. –

2

Versuchen zu verwenden Scaletype centerInside verwendet.

ScaleTypes werden im Eclipse-Layout-Designer nicht ordnungsgemäß gerendert, also testen Sie sie in Ihrer laufenden App.

2

Haben Sie versucht, layout_width und layout_height wie folgt zu geben? Da Sie mit wrap_content arbeiten, wird die Schaltfläche "image" auf die Größe der Höhe und Breite des Quellbilds erweitert.

<blink>  
    <ImageButton> 
    android:id="@+id/Button01" 
    android:scaleType="fitXY" 
    android:layout_width="80dip" 
    android:layout_height="80dip" 
    android:cropToPadding="false" 
    android:paddingLeft="10dp" 
    android:src="@drawable/eye"> 
    </ImageButton> 
</blink> 
1

Sie können auch festlegen, Hintergrund ist transparent. So sieht die Schaltfläche aus wie dein Icon.

<ImageButton 
    android:id="@+id/Button01" 
    android:scaleType="fitcenter" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:cropToPadding="false" 
    android:paddingLeft="10dp" 
    android:background="@android:color/transparent" 
    android:src="@drawable/eye" /> 
+0

Ist es nicht besser, nur als Android zu zeichnen: Hintergrund? Auf diese Weise brauchen Sie nicht beide Android: Hintergrund und Android: src. –

0

Ich glaube, Sie dieses Problem bereits gelöst, und wie andere Antworten vorgeschlagen

android:background="@drawable/eye" 

zur Verfügung steht. Aber ich ziehe

android:src="@drawable/eye" 
android:background="00000000" // transparent 

und es funktioniert auch gut. (Natürlich ehemaliges Codebild als Hintergrund gesetzt wird und der andere wird eingestellt Bild als Bild), aber nach Ihrer Antwort an, ich denke, Sie bedeuten 9- patch.

2

Sie müssen ihn nicht verwenden Attribut src

Falsche Weise mit (Das Bild wird auf die Schaltfläche nicht passen)

android:src="@drawable/myimage" 

richtige Weg ist Hintergrund atttribute verwenden

<ImageButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:background="@drawable/skin" /> 

wo Haut ist ein xml

skin.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <!-- <item android:drawable="@drawable/button_disabled" android:state_enabled="false"/> --> 
    <item android:drawable="@drawable/button_pressed" android:state_pressed="true"/> 
    <!-- <item android:drawable="@drawable/button_focused" android:state_focused="true"/> --> 
    <item android:drawable="@drawable/button_normal"/> 

</selector> 

button_pressed.png mit und

Diese button_normal.png werden Sie auch mit 4 Zuständen aus gepresstem, normal, deaktiviert und konzentriert bei der Erstellung Ihrer Haut Taste helfen. Sicherstellen, dass alle pngs die gleichen Größen haben

Verwandte Themen