4 Stimmen

Android ignoriert meine setWidth() und setHeight()

Warum also funktioniert dieser Code:

package org.popoffka.apicross;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;

public class Game extends Activity {
 @Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     Button testButton = new Button(this);
     testButton.setBackgroundResource(R.drawable.cell);
     testButton.setWidth(20);
     testButton.setHeight(20);
     setContentView(testButton);
 }
}

...dieses Ding produzieren: http://i42.tinypic.com/2hgdzme.png obwohl im Code ein setWidth(20) und setHeight(20) vorhanden ist? (R.drawable.cell ist eigentlich ein 20x20 PNG-Bild, das eine weiße Zelle mit einem silbernen Rand enthält)

13voto

Romain Guy Punkte 96489

Der richtige Weg, um die Breite und Höhe einer Ansicht festzulegen, ist, dies über die LayoutParams zu tun. Siehe ViewGroup.LayoutParams und View.getLayoutParams().

3voto

aioobe Punkte 397211

Sie stellen die Schaltfläche als Inhaltsansicht ein, d. h. Sie verwenden sie als "Root-Container".

Fügen Sie die Schaltfläche zu einem geeigneten Layout hinzu, und legen Sie das Layout als Inhaltsansicht fest.

Überlegen Sie mal, was würden Sie an den Seiten des Knopfes haben? Keine Komponente würde diesen Bereich abdecken, und es wäre unmöglich für die Benutzeroberfläche zu wissen, was in diesen Bereichen zu rendern ist.

0voto

Naveen Kumar Punkte 981

Ich weiß, dass dies eine späte Antwort ist, aber ich hoffe, sie hilft jemandem.

Das liegt daran, dass die Schaltfläche standardmäßig eine Mindestbreite von 64dip hat. Setzen Sie ihn auf 0, bevor Sie die Breite einstellen.

b.setMinimumWidth(0);

Andernfalls ist die beste Praxis die Verwendung von LayoutParameter

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X