我想用这样的行来创建自定义TableLayout:
TV适用于TextView,即我想在行中添加11个TextView:
每行以标题开头,然后我添加5对TextView,以便表格行与屏幕一样宽。 这是我的代码:
public class FlowTable extends TableLayout {
private Context context;
public FlowTable(Context context) {
super(context);
this.context = context;
}
public FlowTable(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
}
public void addContent(List<ResultItem> data) {
TableRow tableRow = new TableRow(context);
LayoutParams params = new LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1);
for (int i = 0; i < data.size(); i++) {
if (i % 5 == 0) {
this.addView(tableRow, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
tableRow = new TableRow(context);
TextView tvRange = new TextView(context);
tvRange.setLayoutParams(params);
tvRange.setText(genRange(i+1));
tableRow.addView(tvRange);
}
TextView tvDistance = new TextView(context);
tvDistance.setLayoutParams(params);
tvDistance.setText(String.valueOf(data.get(i).distance));
TextView tvResult = new TextView(context);
tvResult.setLayoutParams(params);
tvResult.setText(data.get(i).result);
tableRow.addView(tvDistance);
tableRow.addView(tvResult);
}
}
private String genRange(int currIndex){
/********************/
return somestring;
}
}
使用表格
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<packagename.FlowTable
android:id="@+id/flowTable"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
片段:
View root = inflater.inflate(R.layout.fragment_session_summary, container, false);
FlowTable flowTable = (FlowTable)root.findViewById(R.id.flowTable);
flowTable.addContent(data);
问题:屏幕空了!什么都没有。在我将布局参数添加到textview之前,它有效,但行没有占用屏幕宽度。我的初始解决方案基于LinearLayout示例,因为TableRow是LinearLayout的扩展。但我不能让它发挥作用。 感谢。
答案 0 :(得分:10)
尝试以编程方式将所有列设置为拉伸(对我来说似乎不适用于XML):
...
flowTable.addContent(data);
flowTable.setStretchAllColumns(true);
其他一些快速事实:
我可能也谦虚地建议进行一些重构:
public class FlowTable extends TableLayout {
private TableRow mCurrentRow;
public FlowTable(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public FlowTable(Context context) {
super(context);
init();
}
private void init() {
mCurrentRow = new TableRow(getContext());
mCurrentRow.addView(createAndFillTextView("0")); // title for first row
setStretchAllColumns(true);
}
public void addContent(List<ResultInfo> data) {
for (int i = 0; i < data.size(); i++) {
if ((i % 5 == 0) && (i != 0) /** Don't do this on 0! */) {
finishRowAndStartNew(i);
}
mCurrentRow.addView(createAndFillTextView(data.get(i).distance));
mCurrentRow.addView(createAndFillTextView(data.get(i).result));
}
}
private void finishRowAndStartNew(int newRowIndex) {
addView(mCurrentRow);
mCurrentRow = new TableRow(getContext());
mCurrentRow.addView(createAndFillTextView(genRange(newRowIndex+1)));
}
private String genRange(int currIndex){
/********************/
return String.valueOf(currIndex);
}
private TextView createAndFillTextView(String text) {
TextView tv = new TextView(getContext());
tv.setText(text);
return tv;
}
}
答案 1 :(得分:1)
如果您想使用xml Layout,请尝试以下方法:
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<TableRow android:weightSum="1">
<LinearLayout android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_weight="1" android:layout_marginRight="4dp">
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Title" android:layout_weight="1"/>
</LinearLayout>
<!-- First Group -->
<LinearLayout android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_weight="1" android:layout_marginRight="4dp">
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv1"/>
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv2"/>
</LinearLayout>
<!-- Second Group -->
<LinearLayout android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_weight="1" android:layout_marginRight="4dp">
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv1"/>
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv2"/>
</LinearLayout>
<!-- Third Group -->
<LinearLayout android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_weight="1" android:layout_marginRight="4dp">
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv1"/>
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv2"/>
</LinearLayout>
<!-- Fourth Group -->
<LinearLayout android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_weight="1" android:layout_marginRight="4dp">
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv1"/>
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv2" />
</LinearLayout>
<!-- Fifth Group -->
<LinearLayout android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_weight="1" android:layout_marginRight="2dp">
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv1"/>
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv2"/>
</LinearLayout>
</TableRow>
<TableRow android:weightSum="1">
<LinearLayout android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_weight="1" android:layout_marginRight="4dp">
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Title" android:layout_weight="1"/>
</LinearLayout>
<!-- First Group -->
<LinearLayout android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_weight="1" android:layout_marginRight="4dp">
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv1"/>
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv2"/>
</LinearLayout>
<!-- Second Group -->
<LinearLayout android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_weight="1" android:layout_marginRight="4dp">
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv1"/>
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv2"/>
</LinearLayout>
<!-- Third Group -->
<LinearLayout android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_weight="1" android:layout_marginRight="4dp">
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv1"/>
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv2"/>
</LinearLayout>
<!-- Fourth Group -->
<LinearLayout android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_weight="1" android:layout_marginRight="4dp">
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv1"/>
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv2" />
</LinearLayout>
<!-- Fifth Group -->
<LinearLayout android:layout_height="wrap_content" android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_weight="1" android:layout_marginRight="2dp">
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv1"/>
<TextView android:id="@+id/totalText"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textStyle="bold" android:textSize="12sp" android:textColor="#000000"
android:text="Tv2"/>
</LinearLayout>
</TableRow>
</TableLayout>
希望它会对你有所帮助。 。 。 如果你想要其他xml然后让我知道。 感谢。