我正在以编程方式填充tableLayout。我希望我的行像这样
<TableRow android:id="@+id/tableRow1"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:src="@drawable/icon" android:id="@+id/imageView1"
android:layout_height="wrap_content" android:layout_width="wrap_content"></ImageView>
<LinearLayout android:id="@+id/linearLayout2"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical">
<TextView android:id="@+id/textView2" android:text="TextView"
android:layout_height="wrap_content" android:layout_width="wrap_content"></TextView>
<TextView android:text="TextView" android:id="@+id/textView1"
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>
<Button android:text="Button" android:id="@+id/button1"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</TableRow>
我通过代码执行此操作
TableRow row = new TableRow(activity);
row.setGravity(Gravity.CENTER);
row.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CONTENT));
image.setPadding(10, 10, 10, 10);
((LinearLayout) image).setGravity(Gravity.LEFT);
row.addView(image);
LinearLayout main = new LinearLayout(row.getContext());
main.setLayoutParams(new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));
main.setOrientation(LinearLayout.VERTICAL);
TextView nameView = new TextView(activity);
if(name.length() > 22)
nameView.setText(name.substring(0, 22)+"...");
else
nameView.setText(name);
nameView.setPadding(10, 10, 10, 10);
nameView.setTextColor(Color.parseColor("#83be56"));
nameView.setTypeface(null,Typeface.BOLD);
nameView.setLayoutParams(new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));
main.addView(nameView,new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));
row.addView(main);
bt.setText("Respond");
bt.setPadding(10,10,10,10);
bt.setGravity(Gravity.CENTER);
row.addView(bt);
但线性布局不会出现在行中。我哪里错了? 感谢
答案 0 :(得分:1)
您可以查看this SO answer,其中介绍了如何以编程方式创建TableRow
,并根据部分XML
定义对其进行充气。
编辑,评论后:链接答案的要点是:
<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/tr_withborder" />
TableRow tr = (TableRow) getLayoutInflater().inflate(R.layout.partial_table_row, null);
答案 1 :(得分:0)
以下是我如何以编程方式将TableRows添加到表格布局中。每个View问题实际上都是一个独立于它所放入的片段的XML文件。该片段有一个Tablelayout,questionContainer,它接受每个新问题并将其添加到底部(questionContainer在滚动视图中):
public class EconFragment extends SherlockFragment {
private TableLayout questionContainer;
int pos = 0;
private String[] titles = {"The first title ", "hallo1","hallo2", "hallo3",
"hallo4", "hallo5","hallo6", "hallo7","hallo8", "hallo9"};
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.v("Econ", "onCreateView");
View v = inflater.inflate(R.layout.econfragment, container, false);
questionContainer = (TableLayout) v.findViewById(R.id.questionContainer);
//bs
int leftMargin=5;
int topMargin=5;
int rightMargin=5;
int bottomMargin=5;
while (pos < 10) {
View question = inflater.inflate(R.layout.question, null);
question.setId(pos);
TextView title = (TextView) question.findViewById(R.id.questionTextView);
title.setText(titles[pos]);
Button charts = (Button) question.findViewById(R.id.chartsButton);
charts.setId(pos);
charts.setOnClickListener(chartsListener);
TableRow tr = (TableRow) question;
TableLayout.LayoutParams trParams = new TableLayout.LayoutParams(
TableLayout.LayoutParams.MATCH_PARENT,
TableLayout.LayoutParams.WRAP_CONTENT);
trParams.setMargins(leftMargin, topMargin, rightMargin, bottomMargin);
tr.setLayoutParams(trParams);
Log.v("econ", "while loop");
questionContainer.addView(tr);
pos++;
}
pos = 0;
return v;
}
答案 2 :(得分:0)
{{1}}