2010-06-16 7 views
12

ich möchte android: layout_centerVertical = "true" Eigenschaft des Layouts durch Java-Code eines Bildes.wie zentrieren layout auf vertikale in android durch java code?

kann mir jemand sagen, wie man das erreicht. Hier ist mein Code.

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 

params.height = (int)totalHeight; 

img.setLayoutParams(params); 

Ich habe versucht setScaleType (ScaleType.FIT_CENTER) verwenden, aber keine Verwendung.

jede Hilfe würde geschätzt werden.

Antwort

21

Korrigieren Sie mich, wenn ich falsch liege, aber es klingt, als ob Sie versuchen, die Ausrichtung (oder die Lageorientierung) eines Bildes innerhalb eines Layouts festzulegen? Dazu müssen Sie die Eigenschaft gravity des Layouts festlegen, das die Ausrichtung enthält, die Sie ausrichten.

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon); 

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout); 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.FILL_PARENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 

    ImageView imageView = new ImageView(this); 
    imageView.setLayoutParams(params); 
    imageView.setImageBitmap(bitmap); 

    layout.setGravity(Gravity.CENTER_VERTICAL | Gravity.TOP); 
    layout.addView(imageView); 

In diesem Beispiel habe ich das Hinzufügen zu einem RelativeLayout ein Bild programmatisch in meinem Layout Ressource, das Hinzufügen eines Image und Ausrichten es so wird es an der Spitze, vertikale Mittellage gebracht werden.

2

Im neuen SDK gibt es keine Gravity.VERTICAL_CENTER, aber vielleicht könnten Sie dies mit layout.setGravity(Gravity.CENTER) setzen.

41

diesen Code Versuchen ..

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams 
      ((int) LayoutParams.WRAP_CONTENT, (int) LayoutParams.WRAP_CONTENT); 

params.addRule(RelativeLayout.CENTER_VERTICAL); 

img.setLayoutParams(params); 
+1

Ich ziehe diese über die akzeptierte Antwort, weil es keine anderen Subviews der übergeordneten Ansicht nicht beeinflusst. – arlomedia

+1

Dies ist besser als die angenommene Antwort in RelativeLayout! – cwhsu

Verwandte Themen