2017-07-19 19 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> 

グリッドである。これは私が第二のセルに2行目のTextViewを追加しようとする方法の例のためのものです。

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

テキストは右のセル内にあるように見えますが、その右の見出し

下中央にないこれは私が延期を試してみましたが、完璧に働いたが、私はdynamicaly

それを構築するために必要なのxml verisonです
   <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:text="9" /> 

答えて

2

gravityの代わりにlayout_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

は機能しません、テキストビューとヘッダーが消えています – WeSt

+0

私はすべてのコードを投稿しました。あなたが何か間違ってコピーしているかどうか確認してください。 –

関連する問題