2017-07-19 72 views
0

我在第一行使用了一個帶有幾個標頭的xml製作的Gridlayout。現在我想添加具有動態項目的新行。 我的問題是項目沒有居中在單元格中,並且與標題不匹配。GridLayout中的中心項目

這是XML

<GridLayout 
      android:id="@+id/newGrid" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:columnCount="5" 
      android:rowCount="4"> 
      <!-- Grid Header --> 
      <Space 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_columnWeight="1" 
       android:layout_gravity="center" 
       android:text="@string/cellNo" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_columnWeight="1" 
       android:layout_gravity="center" 
       android:text="@string/desity" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_columnWeight="1" 
       android:layout_gravity="center" 
       android:text="@string/voltage" /> 

      <android.support.v7.widget.AppCompatImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:src="@drawable/problemIcon" /> 

</GridLayout> 

網格例如,這是我如何嘗試在第二小區添加一個TextView第二排。

... 
    TextView cellnum = new TextView(getContext()); 
    cellnum.setGravity(Gravity.CENTER); 
    cellnum.setText("9"); 
    ... 
    gridLayout.addView(cellnum); 

的文字似乎是在右邊的單元格,但右側的大標題下,其不集中

這是verison我試圖弗里斯特和工作完美的XML,但我需要dynamicaly構建它

   <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:text="9" /> 

回答

2

您需要設置layout_gravity而不是gravitytextView以使其顯示在中心。

您正在設置layout_gravityxml這就是它的工作原理,但動態地只設置gravity

Xml文件:

<?xml version="1.0" encoding="utf-8"?> 
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/newGrid" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:columnCount="5" 
android:rowCount="4"> 
<!-- Grid Header --> 
<Space 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_columnWeight="1" 
    android:layout_gravity="center" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_columnWeight="1" 
    android:layout_gravity="center" 
    android:text="cell number" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_columnWeight="1" 
    android:layout_gravity="center" 
    android:text="destiny" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_columnWeight="1" 
    android:layout_gravity="center" 
    android:text="voltage" /> 

<android.support.v7.widget.AppCompatImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_columnWeight="1" 
    android:layout_gravity="center" /> 

Activity代碼

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    GridLayout gridLayout = (GridLayout) findViewById(R.id.newGrid); 

    //Adding new textView at row 1 column 0 
    TextView cellNum = new TextView(this); 
    cellNum.setText("9"); 
    gridLayout.addView(cellNum); 

    GridLayout.LayoutParams params = new GridLayout.LayoutParams(cellNum.getLayoutParams()); 
    params.setGravity(Gravity.CENTER); 
    cellNum.setLayoutParams(params); 

    //Adding new textView at row 1 column 1 
    TextView cellNum1 = new TextView(this); 
    cellNum1.setText("10"); 
    gridLayout.addView(cellNum1); 

    GridLayout.LayoutParams params1 = new GridLayout.LayoutParams(cellNum1.getLayoutParams()); 
    params1.setGravity(Gravity.CENTER); 
    cellNum1.setLayoutParams(params1); 

} 
} 
+0

LayoutParams.WRAP_CONTENT和LayoutParams.FILL_PARENT缺少進口。但GridLayout.LayoutParams(...)不被接受 – WeSt

+0

不起作用,textview甚至頭正在消失 – WeSt

+0

我已經發布了我的所有代碼,它在我身邊。請檢查您是否正在複製錯誤 –