2017-10-02 8 views
0

Dies ist die XML, die gut funktionieren, wenn ich in Android Studio ausführen, wie programmgesteuert zu machen?Gravity.CENTER in GridLayout funktioniert nicht

<?xml version="1.0" encoding="utf-8"?> 
<GridLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    tools:context="com.test.MainActivity"> 
     <TextView 
      android:text="Texto 1"/> 

</GridLayout> 

Dies ist der Code, dass ich ohne Erfolg zu machen versuchen ...

//TODO create Grid params 
GridLayout.LayoutParams gridParams = new GridLayout.LayoutParams(); 
gridParams.height = GridLayout.LayoutParams.WRAP_CONTENT; 
gridParams.width = GridLayout.LayoutParams.WRAP_CONTENT; 
//TODO set gravity to CENTER 
gridParams.setGravity(Gravity.CENTER); 

//TODO create GridLayout 
GridLayout gridLayout = new GridLayout(context); 
//TODO set Grid Params 
gridLayout.setLayoutParams(gridParams); 

//TODO create TextView 
TextView textView = new TextView(context); 
textView.setText("Text 1"); 
//TODO add to Grid 
gridLayout.addView(textView); 

setContentView(gridLayout); 

Android Studio Version 2.3.3 in Tablet Android 4.2.2

EDIT Arbeits Getestet läuft

RelativeLayout.LayoutParams layoutParams = 
        new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
          ViewGroup.LayoutParams.MATCH_PARENT); 
RelativeLayout parentRelativeLayout = new RelativeLayout(context); 
parentRelativeLayout.setLayoutParams(layoutParams); 
parentRelativeLayout.setGravity(Gravity.CENTER); 
parentRelativeLayout.addView(gridLayout); 

Antwort

0

Ihr Rasterlayout muss innerhalb eines anderen Layouts wieliegenmit einer Breite und Höhe des übergeordneten Elements.

Es ist nicht, dass es nicht funktioniert, nur daran denken, das GridLayout ist nur groß genug, um seine eigenen Container enthalten, die nicht die Größe des Bildschirms ist.

0

Versuchen Sie es.

GridLayout.LayoutParams gridParams = new GridLayout.LayoutParams(); 
gridParams.height = GridLayout.LayoutParams.WRAP_CONTENT; 
gridParams.width = GridLayout.LayoutParams.MATCH_PARENT; 
params.gravity = Gravity.CENTER; 
params.weight=1.0f; 

// TODO erstellen Grid params