我正在使用一个在xml中创建的Gridlayout,第一行有几个标题。现在我想添加具有动态项目的新行。 我的问题是项目不在单元格的中心,与标题不匹配。
这是xml中的Grid
<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);
文本似乎在正确的单元格中,但它不在标题正下方
这是xml verison,我尝试了frist并且工作完美,但我需要动态构建它
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="9" />
答案 0 :(得分:3)
您需要设置layout_gravity
而不是gravity
textView
才能使其显示在中心位置。
您在layout_gravity
中设置了xml
,这就是它的工作原理,但动态的是您只设置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);
}
}